#include <iostream> #include <algorithm> using namespace std; struct Process { int pid; // process id int bt; // burst time int wt; // waiting time int tat; // turnaround time int priority; // process priority }; bool compare(Process p1, Process p2) { return p1.priority > p2.priority; } void priorityScheduling(Process proc[], int n) { sort(proc, proc + n, compare); int wt[n], tat[n], total_wt = 0, total_tat = 0; wt[0] = 0; tat[0] = proc[0].bt; for(int i = 1; i < n; i++) { wt[i] = wt[i-1] + proc[i-1].bt; tat[i] = tat[i-1] + proc[i].bt; } for(int i = 0; i < n; i++) { proc[i].wt = wt[i]; proc[i].tat = tat[i]; total_wt += wt[i]; total_tat += tat[i]; } float avg_wt = (float) total_wt / n; float avg_tat = (float) total_tat / n; cout << "Average waiting time = " << avg_wt << endl; cout << "Average turnaround time = " << avg_tat << endl; } int main() { int n; cout << "Enter the number of processes: "; cin >> n; Process proc[n]; for(int i = 0; i < n; i++) { cout << "Enter the burst time for process " << i << ": "; cin >> proc[i].bt; cout << "Enter the priority for process " << i << ": "; cin >> proc[i].priority; proc[i].pid = i; } priorityScheduling(proc, n); return 0; }