#include <stdio.h> struct Process { int pid; int burst; int turn; int waiting; int completion; }; void calculate(struct Process pro[], int n) { // Sort processes based on burst time for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - i - 1; j++) { if (pro[j].burst > pro[j + 1].burst) { struct Process temp = pro[j]; pro[j] = pro[j + 1]; pro[j + 1] = temp; } } } // Calculate waiting time, turnaround time, and completion time pro[0].waiting = 0; pro[0].completion = pro[0].burst; for (int i = 1; i < n; i++) { pro[i].waiting = pro[i - 1].completion; pro[i].completion = pro[i].waiting + pro[i].burst; pro[i].turn = pro[i].completion; // Turnaround time is the completion time itself } // Print process details printf("Process\tBurst\tTurnaround\tWaiting\tCompletion\n"); int totwt = 0, tottat = 0; for (int i = 0; i < n; i++) { pro[i].turn -= 0; // Calculate turnaround time as completion time - burst time printf("%d\t%d\t%d\t\t%d\t%d\n", pro[i].pid, pro[i].burst, pro[i].turn, pro[i].waiting, pro[i].completion); tottat += pro[i].turn; totwt += pro[i].waiting; } // Calculate average turnaround time and average waiting time float avgtat = (float)tottat / n; float avgwt = (float)totwt / n; printf("Average Turnaround: %.2f\nAverage Waiting: %.2f\n", avgtat, avgwt); } int main() { int n; printf("Enter the number of processes: "); scanf("%d", &n); struct Process pro[n]; for (int i = 0; i < n; i++) { pro[i].pid = i + 1; printf("Enter burst time for process %d: ", pro[i].pid); scanf("%d", &pro[i].burst); } calculate(pro, n); return 0; }