#include<stdio.h>
main()
{
int n,i,j,pos;
puts("Enter the number of processes");
scanf("%d",&n);
float at[n],bt[n],wt[n],fin[n];
puts("Enter the arrival time and burst time");
for(i=0;i<n;i++)
{
wt[i]=-1;
fin[i]=0;
scanf("%f%f",&at[i],&bt[i]);
}
printf("Process\tArrival Time\tBurst time\n");
for(i=0;i<n;i++)
printf("P[%d]\t%.1f\t\t%.1f\n",i+1,at[i],bt[i]);
for(i=0;i<n;i++)
{
pos=i;
for(j=i+1;j<n;j++)
{
if(at[pos]>at[j])
pos=j;
}
at[pos]=at[pos]+at[i]-(at[i]=at[pos]);
bt[pos]=bt[pos]+bt[i]-(bt[i]=bt[pos]);
}
int k=0;
for(i=0;i<n-1&&bt[i]>0;i++)
{
pos=i;
for(j=0;j<=i;j++)
{
if(bt[j]>0&&bt[pos]>bt[j])
pos=j;
}
if(wt[pos]==-1)
wt[pos]=k;
k+=at[i+1]-at[i];
bt[pos]-=at[i+1]-at[i];
fin[pos]=k;
}
int count=0;
i=0;
while(count<n)
{
if(bt[i]==0)
{
bt[i]=-1;
count++;
}
else if(bt[i]>0)
{
pos=i;
for(j=0;j<n;j++)
{
if(bt[j]>0&&bt[pos]>bt[j])
pos=j;
}
if(wt[pos]==-1)
wt[pos]=0;
wt[pos]+=k-fin[pos];
k+=bt[pos];
fin[pos]=k;
bt[pos]=0;
}
if(i==n-1)
i=0;
else i++;
}
float awt=0,atat=0;
for(i=0;i<n;i++)
{
awt+=wt[i]-at[i];
atat+=fin[i]-at[i];
}
printf("AVG WAITING TIME = %.2f\n",awt/n);
printf("AVG TURN AROUND TIME = %.2f",atat/n);
}
Comments
Post a Comment