ulvis.paste.net

Paste Search Dynamic
Recent pastes
Processes
  1. #include <bits/stdc++.h>
  2. using namespace std ;
  3.  
  4. struct Process
  5. {
  6.         int pid ;  
  7.         int burst ;
  8.         int arrival ;
  9. } ;
  10.  
  11. void findWaitingTime(Process proc[] , int n , int wait[])
  12. {
  13.         int rt[n] ;
  14.         for (int i = 0; i < n; i++) rt[i] = proc[i].burst ;
  15.         int complete = 0 , t = 0 , minm = int_max , shortest = 0 , finish_time ;
  16.         bool check = false ;
  17.         while(complete != n)
  18.         {
  19.                 for(int j = 0; j < n; j++)
  20.                 {
  21.                         if((proc[j].arrival <= t) && (rt[j] < minm) && rt[j] > 0)
  22.                         {
  23.                                 minm = rt[j] ;
  24.                                 shortest = j ;
  25.                                 check = true ;
  26.                         }
  27.                 }
  28.                 if(!check)
  29.                 {
  30.                         t++ ;
  31.                         continue ;
  32.                 }
  33.                 rt[shortest]-- ;
  34.                 minm = rt[shortest] ;
  35.                 if (minm == 0) minm = int_max ;
  36.                 if (rt[shortest] == 0)
  37.                 {
  38.                         complete++ ;
  39.                         check = false ;
  40.                         finish_time = t + 1 ;
  41.                         wait[shortest] = finish_time - proc[shortest].burst - proc[shortest].arrival ;
  42.                         if (wait[shortest] < 0) wait[shortest] = 0 ;
  43.                 }
  44.                 t++ ;
  45.         }
  46. }
  47.  
  48. void findTurnAroundTime(Process proc[] , int n , int wait[] , int tat[])
  49. {
  50.         for (int i = 0 ; i < n ; i++) tat[i] = proc[i].burst + wait[i] ;
  51. }
  52.  
  53. void findavgTime(Process proc[], int n)
  54. {
  55.         int wait[n] , tat[n] , total_wt = 0 , total_tat = 0 ;
  56.         findWaitingTime(proc , n , wait) ;
  57.         findTurnAroundTime(proc , n , wait , tat) ;
  58.         cout << " Processes " << " Burst time " << " Waiting time " << " Turn around time " << endl  ;
  59.         for (int i = 0; i < n; i++)
  60.         {
  61.                 total_wt = total_wt + wait[i] ;
  62.                 total_tat = total_tat + tat[i] ;
  63.                 cout << " " << proc[i].pid << "    " << proc[i].burst << "    " << wait[i] << "    " << tat[i] << endl ;
  64.         }
  65.  
  66.         cout << "\nAverage waiting time = " << (float)total_wt / (float)n ;
  67.         cout << "\nAverage turn around time = " << (float)total_tat / (float)n ;
  68. }
  69. int main()
  70. {
  71.         Process proc[] = {{1 , 6 , 1} , {2 , 8 , 1} , {3 , 7 , 2} , {4 , 3 , 3}} ;
  72.         int n = sizeof(proc) / sizeof(proc[0]) ;
  73.  
  74.         findavgTime(proc , n) ;
  75.         return 0 ;
  76. }
  77.  
Parsed in 0.016 seconds