#include<stdio.h>
void findWaitingTime(int processes[], int n, int bt[], int wt[]) {
wt[0] = 0;
for (int i = 1; i < n ; i++ )
wt[i] = bt[i-1] + wt[i-1];
}
void findTurnAroundTime(int processes[], int n, int bt[], int wt[], int tat[]) {
for (int i = 0; i < n ; i++)
tat[i] = bt[i] + wt[i];
}
void findAverageTime(int processes[], int n, int bt[]) {
int wt[n], tat[n];
findWaitingTime(processes, n, bt, wt);
findTurnAroundTime(processes, n, bt, wt, tat);
float total_wt = 0, total_tat = 0;
for (int i = 0; i < n; i++) {
total_wt = total_wt + wt[i];
total_tat = total_tat + tat[i];
}
float avg_wt = total_wt / n;
float avg_tat = total_tat / n;
printf("Average Waiting Time: %f\n", avg_wt);
printf("Average Turn-Around Time: %f\n", avg_tat);
}
void findCompletionTime(int processes[], int n, int bt[], int ct[]) {
ct[0] = bt[0];
for (int i = 1; i < n ; i++)
ct[i] = bt[i] + ct[i-1];
}
void findShortestJobFirst(int processes[], int n, int bt[]) {
int wt[n], tat[n], ct[n];
findCompletionTime(processes, n, bt, ct);
findWaitingTime(processes, n, bt, wt);
findTurnAroundTime(processes, n, bt, wt, tat);
printf("Process\tBurst Time\tWaiting Time\tTurn-Around Time\tCompletion Time\n");
for (int i = 0; i < n; i++)
printf("%d\t%d\t\t%d\t\t%d\t\t%d\n", i+1, bt[i], wt[i], tat[i], ct[i]);
}
int main() {
int processes[] = {1, 2, 3};
int n = sizeof processes / sizeof processes[0];
int burst_time[] = {6, 8, 7};
findShortestJobFirst(processes, n, burst_time);
return 0;
}