fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void solvio(int p[], int n, int bt[], int wt[], int time_quantum)
  5. {
  6. int rem_bt[n];
  7. for (int i = 0 ; i < n ; i++)
  8. rem_bt[i] = bt[i];
  9. int t = 0;
  10. while (1)
  11. {
  12. bool ok = true;
  13. for(int i=0; i<n; i++){
  14. if(rem_bt[i] > 0){
  15. ok = false;
  16. if(rem_bt[i] > time_quantum){
  17. t += time_quantum;
  18. rem_bt[i] -= time_quantum;
  19. }
  20. else{
  21. t += rem_bt[i];
  22. wt[i] = t - bt[i];
  23. rem_bt[i] = 0;
  24. }
  25. }
  26. }
  27. if(ok == true)
  28. break;
  29. }
  30. }
  31.  
  32. void calculate_tat(int p[], int n, int bt[], int wt[], int tat[]){
  33.  
  34. for(int i=0; i<n ; i++)
  35. tat[i] = bt[i] + wt[i];
  36. }
  37. void calculate_at(int p[], int n, int bt[], int time_quantum){
  38. int wt[n],tat[n],total_tat = 0,total_wt = 0;
  39.  
  40. solvio(p, n, bt, wt, time_quantum);
  41.  
  42. calculate_tat(p, n, bt, wt, tat);
  43. cout << "p "<< " Burst time "
  44. << " Waiting time " << " Turn around time\n";
  45. for (int i=0; i<n; i++)
  46. {
  47. total_wt = total_wt + wt[i];
  48. total_tat = total_tat + tat[i];
  49. cout << " " << i+1 << "\t\t" << bt[i] <<"\t "
  50. << wt[i] <<"\t\t " << tat[i] <<endl;
  51. }
  52. cout << "Average waiting time = "<< (float)total_wt / (float)n;
  53. cout << "\nAverage turn around time = "<< (float)total_tat / (float)n;
  54. }
  55.  
  56. int time_quantum(int n, int b_t[]){
  57. int sum = 0;
  58. for(int i=0; i<n; i++){
  59. sum += b_t[i];
  60. }
  61. float mean = (float)sum/n;
  62. float median;
  63. if(n % 2 == 0){
  64. median = ((b_t[n/2]) + (b_t[n/2] + 1)) / 2;
  65. }
  66. else{
  67. median = b_t[(n+1)/2];
  68. }
  69. float tq = sqrt(mean + median);
  70. return tq;
  71. }
  72.  
  73. int main(){
  74. int p[]={ 1, 2, 3};
  75. int n = sizeof p / sizeof p[0];
  76. int b_t[] = {6, 3, 9};
  77. int tq = time_quantum(n, b_t);
  78. calculate_at(p, n, b_t, tq);
  79. return 0;
  80. }
  81.  
  82.  
Success #stdin #stdout 0.01s 5432KB
stdin
Standard input is empty
stdout
p  Burst time  Waiting time  Turn around time
 1		6	 6		 12
 2		3	 3		 6
 3		9	 9		 18
Average waiting time = 6
Average turn around time = 12