Untitled
#include <bits/stdc++.h> using namespace std; struct P { int id, at, bt, ct, wt, tat; }; bool cmp(P a, P b) { return (a.at == b.at) ? (a.bt < b.bt) : (a.at < b.at); } int main() { int n = 10, total_wt = 0, total_tat = 0, t = 0; P p[n]; cout << "Enter Arrival Time (AT) and Burst Time (BT) for " << n << " processes:\n"; for (int i = 0; i < n; i++) { p[i].id = i + 1; cin >> p[i].at >> p[i].bt; } sort(p, p + n, cmp); for (int i = 0; i < n; i++) { if (t < p[i].at) t = p[i].at; // If CPU is idle, move time forward p[i].ct = t + p[i].bt; p[i].tat = p[i].ct - p[i].at; p[i].wt = p[i].tat - p[i].bt; t = p[i].ct; total_wt += p[i].wt; total_tat += p[i].tat; } cout << "\nProcess Details:\n"; cout << "ID\tAT\tBT\tCT\tWT\tTAT\n"; for (int i = 0; i < n; i++) cout << p[i].id << "\t" << p[i].at << "\t" << p[i].bt << "\t" << p[i].ct << "\t" << p[i].wt << "\t" << p[i].tat << "\n"; cout << "\nAverage Waiting Time: " << (float)total_wt / n; cout << "\nAverage Turnaround Time: " << (float)total_tat / n << "\n"; // Gantt Chart cout << "\nGantt Chart:\n "; for (int i = 0; i < n; i++) cout << "----"; cout << "\n|"; for (int i = 0; i < n; i++) cout << " P" << p[i].id << " |"; cout << "\n "; for (int i = 0; i < n; i++) cout << "----"; cout << "\n" << p[0].at; for (int i = 0; i < n; i++) cout << setw(4) << p[i].ct; cout << "\n"; }
Leave a Comment