#include<iostream> using namespace std; struct fcfs { int burst, arrival, id, completion, waiting, turnaround, response; }; fcfs meh[30]; class FCFS { public: int n; void fcfsIn(){ cout<<"\nEnter number of processes: "; cin>>n; for(int i = 0; i < n; i++){ cout<<"\nEnter arrival time of P"<<i<<": "; cin>>meh[i].arrival; cout<<"\nEnter burst time of P"<<i<<": "; cin>>meh[i].burst; meh[i].id = i; } cout<<"\n | Arrival | Burst\n"; for(int j = 0; j < n; j++) { cout<<"P"<<j<<"| "<<meh[j].arrival<<" | "<<meh[j].burst<<"\n"; } } void process() { cout<<"\nSequence of processes is: "; int currentTime = 0; for(int i = 0; i < n; i++){ if(currentTime < meh[i].arrival){ while(currentTime < meh[i].arrival){ cout<<" NULL "; currentTime++; } } meh[i].response = currentTime - meh[i].arrival; cout<<"P"<<meh[i].id<<" "; currentTime += meh[i].burst; meh[i].completion = currentTime; meh[i].turnaround = meh[i].completion - meh[i].arrival; meh[i].waiting = meh[i].turnaround - meh[i].burst; } } void displayMetrics() { double totalWaiting = 0, totalTurnaround = 0, totalCompletion = 0; cout<<"\n\n | Completion time | Waiting time | Turnaround time | Response time\n"; for(int j = 0; j < n; j++) { totalWaiting += meh[j].waiting; totalTurnaround += meh[j].turnaround; totalCompletion += meh[j].completion; cout<<"P"<<j<<"| "<<meh[j].completion <<" | "<<meh[j].waiting <<" | "<<meh[j].turnaround <<" | "<<meh[j].response<<"\n"; } cout<<"\nAverage completion time: "<<totalCompletion/n; cout<<"\nAverage waiting time: "<<totalWaiting/n; cout<<"\nAverage turnaround time: "<<totalTurnaround/n; } }; int main() { FCFS obj; obj.fcfsIn(); obj.process(); obj.displayMetrics(); return 0; }