Skip to content

Instantly share code, notes, and snippets.

@Shahadat3031
Forked from TapasyRabeya/sigle server.cpp
Created January 29, 2018 17:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Shahadat3031/5263e09d1a9c6efb1e6fa84c135b0a4d to your computer and use it in GitHub Desktop.
Save Shahadat3031/5263e09d1a9c6efb1e6fa84c135b0a4d to your computer and use it in GitHub Desktop.
An implementation for simulating single queue single server problem
#include <stdio.h>
#include <stdlib.h>
struct node {
int time_arr , arrivel , sertime, timeserbeg , timeQ , timesevend , timespend ;
node(){}
};
node seg[10000];
int main()
{
printf("\t\tSimulation of Single Queueing Systems\n\n");
int t ;
printf("Enter The Number of customer : ");
scanf("%d" , &t);
seg[1].time_arr = 0;
printf("Enter The Arrival Times: ");
for(int i = 2 ; i <= t ; ++i) scanf("%d" , &seg[i].time_arr);
for(int i = 1 ; i <= t ; ++i) seg[i].arrivel = seg[i].time_arr;
for(int i = 1 ; i <= t ; ++i) seg[i].arrivel += seg[i - 1].arrivel;
printf("Enter The Service Times: ");
for(int i = 1 ; i <= t ; ++i) scanf("%d" , &seg[i].sertime);
seg[1].timeserbeg = seg[1].timeQ = 0;
seg[1].timesevend = seg[1].timespend = seg[1].sertime;
printf("\n\n");
for(int i = 2 ; i <= t ; ++i)
{
if(seg[i].arrivel < seg[i - 1].timesevend)
{
seg[i].timeserbeg = seg[i - 1].timesevend;
seg[i].timeQ = abs(seg[i].arrivel - seg[i - 1].timesevend);
}
else
{;
seg[i].timeserbeg = seg[i].arrivel;
seg[i].timeQ = 0;
}
seg[i].timesevend = seg[i].timeserbeg + seg[i].sertime;
seg[i].timespend = seg[i].timeQ + seg[i].sertime;
}
printf("Simulation Table:\n\n\n");
printf("| C |TSLA | AT | ST | TSB | WTQ |TSE | STS | IT|");
printf("\n---------------------------------------------------\n");
for(int i = 1 ; i <= t ; ++i)
{
printf("|%3d | %3d | %3d | %3d | %3d | %3d |%3d | %3d |" , i , seg[i].time_arr , seg[i].arrivel ,
seg[i].sertime,seg[i].timeserbeg , seg[i].timeQ , seg[i].timesevend , seg[i].timespend );
if(seg[i].timeQ || i == 1) printf(" 0|\n");
else printf("%3d|\n" , abs( seg[i].timeserbeg - seg[i - 1].timesevend) );
}
printf("---------------------------------------------------\n");
double countST=0,countWQ=0;
for(int i = 1 ; i <= t ; ++i){
countWQ= countWQ+seg[i].timeQ;
countST= countST+ seg[i].sertime;
}
printf("\n\nAvarage Waiting Time:%0.3lf",countWQ/(t-1));
printf("\nAvarage service Time:%0.3lf\n\n",countST/(t-1));
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment