/*---------------------------------------------------------------------------------
Title: Write a program to implement First Come First Serve scheduling algorithm.
----------------------------------------------------------------------------------*/
#include<stdio.h>
#include<string.h>
int n;
struct process
{
int arr[30];
char prc[30];
int at,bt,pt;
// int flags,l,id;
}p[30];
struct tprocess
{
char prc[30];
int at,bt;
}tp1[30];
void main()
{
int at[10],bt[10],wt[10],tat[10],i;
float awt,sum=0,x;
printf("\\n FCFS (Non-Preempitve) \\n");
printf("\\n Enter Number of Process : ");
scanf("%d",&n);
for(i=0; i<n; i++)
{
printf("\\n Enter Process Name : ");
scanf("%s",p[i].prc);
printf("\\n Enter Burst Time : ");
scanf("%d",&p[i].bt);
p[i].at = i;
}
printf("\\n Process Name \\t Burst Time \\t Arrival Time \\n");
for(i=0; i<n; i++)
{
printf("\\n %s \\t\\t %d \\t\\t %d ",p[i].prc,p[i].bt,p[i].at);
}
printf("\\n\\n Gaunt Chart : ");
printf(" 0 %s-->%d ",p[0].prc,p[0].bt);
wt[0] = 0 - p[0].at;
for(i=1;i<n;i++)
{
p[i].bt =p[i].bt+p[i-1].bt;
printf(" %s-->%d ",p[i].prc,p[i].bt);
if(i == (n-1))
{
x = p[i].bt;
}
}
for(i=1; i<n; i++)
{
wt[i]=p[i-1].bt-p[i].at;
}
for(i=0; i<n; i++)
{
sum = sum + wt[i];
}
awt = sum/n;
printf("\\n\\n Wating Time : %f ",sum);
printf("\\n Average Waiting Time : %f",awt);
sum =0 ;
for(i=0; i<n; i++)
{
tat[i] = p[i].bt - p[i].at;
sum=sum + tat[i];
}
awt=0;
awt=sum/n;
printf("\\n\\n Turn around Time : %f ",sum);
printf("\\n Average Turn around Time : %f",awt);
awt=0;
awt=(n/x);
printf("\\n\\n Throughput : %f ",awt);
}
//end of the program
/*
// OUTPUT
//------------------
gescoe@gescoe-Vostro-230:~/Desktop/TE$ gcc a6_FCFS_NonP.c
gescoe@gescoe-Vostro-230:~/Desktop/TE$ ./a.out
FCFS (Non-Preempitve)
Enter Number of Process : 4
Enter Process Name : p1
Enter Burst Time : 8
Enter Process Name : p2
Enter Burst Time : 5
Enter Process Name : p3
Enter Burst Time : 2
Enter Process Name : p4
Enter Burst Time : 7
Process Name Burst Time Arrival Time
p1 8 0
p2 5 1
p3 2 2
p4 7 3
Gaunt Chart : 0 p1-->8 p2-->13 p3-->15 p4-->22
Wating Time : 30.000000
Average Waiting Time : 7.500000
Turn around Time : 52.000000
Average Turn around Time : 13.000000
Throughput : 0.181818
// EXIT
*/