Airport Algorithms(CPU Scheduling)

#include<iostream>
#include<iomanip>
using namespace std;
 void roundRobin(int len,string p[], int a[],int b[], int n) 
    { 
         int res = 0; 
        int resc = 0; 
     string seq;
    int res_b[len];  
        int res_a[len];
  
        for (int i = 0; i < len; i++) 
        { 
            res_b[i] = b[i]; 
            res_a[i] = a[i]; 
        } 
  		int t = 0; 
        int w[len];
  		int comp[len];  
        while (true) { 
            bool flag = true; 
            for (int i = 0; i <len; i++) 
            { 
                if (res_a[i] <= t)
                { 
                    if (res_a[i] <= n)
                    { 
                        if (res_b[i] > 0)
                        { 
                            flag = false; 
                            if (res_b[i] > n)
                            { 
                                t = t + n; 
                                res_b[i] = res_b[i] - n; 
                                res_a[i] = res_a[i] + n; 
                                seq += "->" + p[i]; 
                            } 
                            else 
                            { 
                              t = t + res_b[i]; 
  							  comp[i] = t - a[i]; 
  							  w[i] = t - b[i] - a[i]; 
                                res_b[i] = 0; 
                                seq += "->" + p[i]; 
                            } 
                        } 
                    } 
                    else if (res_a[i] > n)
                    { 
  
                        for (int j = 0; j <len; j++)
                        {
                          if (res_a[j] < res_a[i])
                          { 
                                if (res_b[j] > 0)
                                { 
                                    flag = false; 
                                    if (res_b[j] > n)
                                    { 
                                        t = t + n; 
                                        res_b[j] = res_b[j] - n; 
                                        res_a[j] = res_a[j] + n; 
                                        seq += "->" + p[j]; 
                                    } 
                                    else { 
                                        t = t + res_b[j]; 
                                        comp[j] = t - a[j]; 
                                        w[j] = t - b[j] - a[j]; 
                                        res_b[j] = 0; 
                                        seq += "->" + p[j]; 
                                    } 
                                } 
                            } 
                        } 
                        if (res_b[i] > 0) 
                        { 
                            flag = false;   
                            if (res_b[i] > n) 
                            { 
                                t = t + n; 
                                res_b[i] = res_b[i] - n; 
                                res_a[i] = res_a[i] + n; 
                                seq += "->" + p[i]; 
                            } 
                            else
                            { 
                                t = t + res_b[i]; 
                                comp[i] = t - a[i]; 
                                w[i] = t - b[i] - a[i]; 
                                res_b[i] = 0; 
                                seq += "->" + p[i]; 
                            } 
                        } 
                    } 
                } 
     else if (res_a[i] > t) 
     { 
                    t++; 
                    i--; 
                } 
            } 
            if (flag) { 
                break; 
            } 
        } 
        cout<<"Waiting Time";
        for (int i = 0; i < len; i++) { 
          cout<<"\nTime Taken for "<<p[i]<<"="<<w[i];
          res = res + w[i]; 
            resc = resc + comp[i]; 
        } 
   cout<<fixed;
   cout<<"\nAverage Waiting Time="<< (float)res / len; 
   cout<<"\nTurnAround Time";
    for (int i = 0; i < len; i++) { 
          cout<<"\nTime Taken for "<<p[i]<<"="<<comp[i];
    }
  
      
        cout<<"\nAverage TurnAround Time="<< (float)resc / len; 
      
    } 
  int main() 
{   int n ;
  cin>>n;
  int processes[n],arrivaltime[n];
  string name[n];
    int bursttime[n]; 
    int q ;
  for(int i=0;i<n;i++)
  {
    cin>>name[i];
  }
  for(int i=0;i<n;i++)
  {
    cin>>bursttime[i];
     processes[i]=i;
  }
  for(int i=0;i<n;i++)
  {
    cin>>arrivaltime[i];
  }
 cin>>q;
   roundRobin(n,name, arrivaltime, bursttime, q);
    return 0; 
} 
// code by lakshay singhwal

Leave a comment

Design a site like this with WordPress.com
Get started