boopathi

Discrete Event Simulation

Aug 30th, 2012
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. /*
  2.  * Usage : './a.out 10'
  3.  * where 10 is the number of customers
  4.  */
  5. #include<iostream>
  6. #include<stdlib.h>
  7. #define FOR(n) for(int i=0;i<(n);i++)
  8. #define TAB "\t"
  9. using namespace std;
  10. int main(int argc, char *argv[]) {
  11.   struct event {
  12.     int id;
  13.     float arrival_time, service_time, start_time, dept_time, server_idle_time, time_in_queue, total_time;
  14.   } e[100];
  15.   int n=atoi(argv[1]);
  16.   //Get inputs
  17.   cout<<"Input method : arrival_time<TAB>service_time"<<endl;
  18.   cout<<"Arrival\tService"<<endl;
  19.   cout<<"Time\tTime"<<endl;;
  20.   FOR(n){
  21.     e[i].id = i+1;
  22.     cin>>e[i].arrival_time>>e[i].service_time;
  23.   }
  24.   //Populate
  25.   FOR(n){
  26.     if(0==i || e[i-1].dept_time < e[i].arrival_time)
  27.       e[i].start_time = e[i].arrival_time;
  28.     else
  29.       e[i].start_time = e[i-1].dept_time;
  30.     e[i].dept_time = e[i].start_time + e[i].service_time;
  31.     e[i].time_in_queue = e[i].start_time - e[i].arrival_time;
  32.     e[i].total_time = e[i].dept_time - e[i].arrival_time;
  33.     e[i].server_idle_time = e[i].arrival_time - (0==i ? 0 : e[i-1].dept_time);
  34.     e[i].server_idle_time = e[i].server_idle_time > 0 ? e[i].server_idle_time : 0;
  35.   }
  36.   //Output
  37.   cout<<"Cust\tArrival\tStart\tDept\tServer\tTime in\tTotal"<<endl;
  38.   cout<<"ID\tTime\tService\tTime\tIdle\tQueue\tTime"<<endl;
  39.   FOR(n){
  40.     cout<<e[i].id<<TAB<<e[i].arrival_time<<TAB<<e[i].start_time<<TAB<<e[i].dept_time<<TAB<<e[i].server_idle_time<<TAB<<e[i].time_in_queue<<TAB<<e[i].total_time<<endl;
  41.   }
  42.  
  43.   return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment