fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct Process {
  5. int id;
  6. int burst_time;
  7. int priority;
  8. int arrival_time;
  9. int completion_time;
  10. int waiting_time;
  11. int turnaround_time;
  12. };
  13.  
  14. void sortByArrivalTime(Process processes[], int n) {
  15. for (int i = 0; i < n - 1; ++i) {
  16. for (int j = i + 1; j < n; ++j) {
  17. if (processes[i].arrival_time > processes[j].arrival_time) {
  18. swap(processes[i], processes[j]);
  19. }
  20. }
  21. }
  22. }
  23.  
  24. void sortByPriority(Process processes[], int n) {
  25. for (int i = 0; i < n - 1; ++i) {
  26. for (int j = i + 1; j < n; ++j) {
  27. if (processes[i].priority > processes[j].priority) {
  28. swap(processes[i], processes[j]);
  29. }
  30. }
  31. }
  32. }
  33.  
  34. void calculateTimes(Process processes[], int n) {
  35. int current_time = 0;
  36.  
  37. for (int i = 0; i < n; ++i) {
  38. if (processes[i].arrival_time > current_time) {
  39. current_time = processes[i].arrival_time;
  40. }
  41. processes[i].completion_time = current_time + processes[i].burst_time;
  42. processes[i].turnaround_time = processes[i].completion_time - processes[i].arrival_time;
  43. processes[i].waiting_time = processes[i].turnaround_time - processes[i].burst_time;
  44. current_time = processes[i].completion_time;
  45. }
  46. }
  47.  
  48. void displayResults(Process processes[], int n) {
  49. cout << "ID\tBurst Time\tArrival Time\tPriority\tWaiting Time\tTurnaround Time\tCompletion Time\n";
  50. for (int i = 0; i < n; ++i) {
  51. cout << processes[i].id << "\t" << processes[i].burst_time << "\t\t" << processes[i].arrival_time
  52. << "\t\t" << processes[i].priority << "\t\t" << processes[i].waiting_time << "\t\t"
  53. << processes[i].turnaround_time << "\t\t" << processes[i].completion_time << endl;
  54. }
  55. }
  56.  
  57. int main() {
  58. int n;
  59.  
  60. cout << "Enter number of processes: ";
  61. cin >> n;
  62.  
  63. Process processes[n];
  64.  
  65. for (int i = 0; i < n; ++i) {
  66. cout << "Enter Burst Time, Priority, Arrival Time for Process " << i + 1 << ":\n";
  67. processes[i].id = i + 1;
  68. cin >> processes[i].burst_time >> processes[i].priority >> processes[i].arrival_time;
  69. }
  70.  
  71. sortByArrivalTime(processes, n);
  72. sortByPriority(processes, n);
  73. calculateTimes(processes, n);
  74. displayResults(processes, n);
  75.  
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0.01s 5296KB
stdin
6
10 2 1
1 4 0
2 1 3
1 3 2
5 5 3
4 6 5
stdout
Enter number of processes: Enter Burst Time, Priority, Arrival Time for Process 1:
Enter Burst Time, Priority, Arrival Time for Process 2:
Enter Burst Time, Priority, Arrival Time for Process 3:
Enter Burst Time, Priority, Arrival Time for Process 4:
Enter Burst Time, Priority, Arrival Time for Process 5:
Enter Burst Time, Priority, Arrival Time for Process 6:
ID	Burst Time	Arrival Time	Priority	Waiting Time	Turnaround Time	Completion Time
3	2		3		1		0		2		5
1	10		1		2		4		14		15
4	1		2		3		13		14		16
2	1		0		4		16		17		17
5	5		3		5		14		19		22
6	4		5		6		17		21		26