ghorardim

Prority

Nov 12th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const long long mx=1e5;
  5.  
  6. struct process
  7. {
  8. int priority;
  9. int process_id;
  10. int burst_time;
  11. int arrival_time;
  12. int finishing_time;
  13. };
  14.  
  15. bool operator<(process A, process B)
  16. {
  17. if(A.priority < B.priority)
  18. {
  19. return true;
  20. }
  21. if(A.priority == B.priority)
  22. {
  23. return A.arrival_time < B.arrival_time;
  24. }
  25. return false;
  26. }
  27.  
  28. int n;
  29. int waiting_time[mx+5];
  30. process processes[mx+5];
  31. int turn_around_time[mx+5];
  32.  
  33. void find_waiting_and_turn_around_time(void)
  34. {
  35. int i;
  36.  
  37. sort(processes+1, processes+n+1);
  38.  
  39. for(i=1; i<=n; i++)
  40. {
  41. processes[i].finishing_time = processes[i-1].finishing_time + processes[i].burst_time;
  42.  
  43. turn_around_time[i] = processes[i].finishing_time - processes[i].arrival_time;
  44. waiting_time[i] = processes[i].finishing_time - processes[i].arrival_time - processes[i].burst_time;
  45. }
  46. return;
  47. }
  48.  
  49. void find_average_times(void)
  50. {
  51. int i;
  52. double total_waiting_time, total_turn_around_time, N;
  53.  
  54. find_waiting_and_turn_around_time();
  55.  
  56. N = n;
  57. total_waiting_time = 0.0;
  58. total_turn_around_time = 0.0;
  59. for(i=1; i<=n; i++)
  60. {
  61. total_waiting_time += waiting_time[i];
  62. total_turn_around_time += turn_around_time[i];
  63. }
  64. printf("Average Waiting Time: %.02f\n", (total_waiting_time/N));
  65. printf("Average Turn Around Time: %.02f\n", (total_turn_around_time/N));
  66. return;
  67. }
  68.  
  69. int main()
  70. {
  71. int i;
  72. printf("Number of Processes: ");
  73. cin>>n;
  74.  
  75. printf("Process Ids:\n");
  76. for(i=1; i<=n; i++) cin>>processes[i].process_id;
  77.  
  78. printf("Process Burst Times:\n");
  79. for(i=1; i<=n; i++) cin>>processes[i].burst_time;
  80.  
  81. printf("Process Arrival Times:\n");
  82. for(i=1; i<=n; i++) cin>>processes[i].arrival_time;
  83.  
  84. printf("Process Priorities:\n");
  85. for(i=1; i<=n; i++) cin>>processes[i].priority;
  86.  
  87. find_average_times();
  88.  
  89. return 0;
  90. }
Add Comment
Please, Sign In to add comment