fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. // Structure to represent a process
  7. struct Process {
  8. int id; // Process ID
  9. int arrivalTime; // Arrival time of the process
  10. int burstTime; // Burst time of the process
  11. int completionTime; // Completion time of the process
  12. int waitingTime; // Waiting time of the process
  13. int turnaroundTime; // Turnaround time of the process
  14. };
  15.  
  16. // Function to calculate waiting time, turnaround time, and completion time
  17. void calculateTimes(vector<Process>& processes) {
  18. for (size_t i = 0; i < processes.size(); i++) {
  19. if (i == 0) {
  20. // First process starts execution immediately
  21. processes[i].waitingTime = 0;
  22. processes[i].completionTime = processes[i].arrivalTime + processes[i].burstTime;
  23. } else {
  24. // Waiting time is the idle time plus the time taken by previous processes
  25. processes[i].waitingTime = max(0, processes[i - 1].completionTime - processes[i].arrivalTime);
  26. processes[i].completionTime = processes[i].arrivalTime + processes[i].waitingTime + processes[i].burstTime;
  27. }
  28. // Turnaround time is the total time taken by the process
  29. processes[i].turnaroundTime = processes[i].completionTime - processes[i].arrivalTime;
  30. }
  31. }
  32.  
  33. // Function to display the FCFS schedule
  34. void displaySchedule(const vector<Process>& processes) {
  35. cout << "Process\tArrival Time\tBurst Time\tWaiting Time\tTurnaround Time\tCompletion Time\n";
  36. for (const auto& process : processes) {
  37. cout << process.id << "\t" << process.arrivalTime << "\t\t" << process.burstTime << "\t\t"
  38. << process.waitingTime << "\t\t" << process.turnaroundTime << "\t\t" << process.completionTime << "\n";
  39. }
  40. }
  41.  
  42. int main() {
  43. int n; // Number of processes
  44. cout << "Enter the number of processes: ";
  45. cin >> n;
  46.  
  47. vector<Process> processes(n);
  48.  
  49. // Input arrival time and burst time for each process
  50. for (int i = 0; i < n; i++) {
  51. cout << "Enter arrival time and burst time for process " << i + 1 << ": ";
  52. cin >> processes[i].arrivalTime >> processes[i].burstTime;
  53. processes[i].id = i + 1; // Assign process ID
  54. }
  55.  
  56. // Sort processes based on arrival time
  57. sort(processes.begin(), processes.end(), [](const Process& a, const Process& b) {
  58. return a.arrivalTime < b.arrivalTime;
  59. });
  60.  
  61. // Calculate waiting time, turnaround time, and completion time
  62. calculateTimes(processes);
  63.  
  64. // Display the schedule
  65. displaySchedule(processes);
  66.  
  67. return 0;
  68. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
Enter the number of processes: Process	Arrival Time	Burst Time	Waiting Time	Turnaround Time	Completion Time