#include
typedef struct
{
int starttime;
int endtime;
int arrivetime;
int cputime;
int roundtime;
}WORK;
void Roll(WORK a[],int b[],int temb[],int n)
{
int i,j,t,flag;
for(i=1;
i<=n;
i++)
{
b[i]=a[i].arrivetime;
temb[i]=i;
}
for(i=1;
i<=n;
i++)
{
flag=1;
for (j=1;
j<=n-i;
j++)
{
if (b[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
t=temb[j];
temb[j]=temb[j+1];
temb[j+1]=t;
}
}
}
}
int main()
{printf("**************欢迎使用FCFS调度算法演示程序****************\n");
int n,i;
WORK a[10];
int temb[10];
int b[10];
int currentTime;
printf("请输入需要调度的作业个数:\n");
scanf("%d",&n);
printf("请分别输入每个作业的到达时间和运行时间:\n");
int sum=0;
for(i=1;
i<=n;
i++)
{
a[i].starttime=0;
a[i].endtime=0;
a[i].roundtime=0;
printf("WORK%d到达时间:\n",i);
scanf("%d",&a[i].arrivetime);
printf("WORK%d运行时间:\n",i);
scanf("%d",&a[i].cputime);
}
Roll(a,b,temb,n);
currentTime=a[temb[1]].arrivetime;
a[temb[1]].starttime=currentTime;
a[temb[1]].endtime=currentTime+a[temb[1]].cputime;
a[temb[1]].roundtime=a[temb[1]].cputime;
currentTime=a[temb[1]].endtime;
for(i=2;
i<=n;
i++)
{
if(a[temb[i]].arrivetime
a[temb[i]].endtime=currentTime+a[temb[i]].cputime;
}
else
{
currentTime=a[temb[i]].arrivetime;
a[temb[i]].endtime=currentTime+a[temb[i]].cputime;
}
a[temb[i]].starttime=currentTime;
a[temb[i]].roundtime=a[temb[i]].endtime-a[temb[i]].arrivetime;
currentTime=a[temb[i]].endtime;
}
for(i=1;
i<=n;
i++)
{
printf("WORK%d的到达时间%d起始时间%d结束时间%d\n",temb[i],a[temb[i]].arrivetime,a[temb[i]].starttime,a[temb[i]].endtime);
}
for(i=1;
i<=n;
i++){
printf("作业%d的周转时间为:",i);
printf("%d\n",a[temb[i]].endtime-a[temb[i]].arrivetime);
sum=sum+(a[temb[i]].endtime-a[temb[i]].arrivetime);
}
printf("平均周转时间为:%d",sum/n);
return 0;
}