#include
#include
#define N 3 //5个作业
struct Jcb{
char JobName[10]; //作业名
int ArriveTime; // 到达时间
int RunTime; //运行时间
int StartTime; //开始时间
int EndTime; //结束时间
int TurnTime; //周转时间
float DQuanTurnTime;//带权周转时间
};
Jcb job[N];
Jcb jjjob[N];
Jcb* jjob[N];
void CreatJcb(){
printf("输 入作业信息 作业名 到达时间 运行时间\n");
for(int i=0;i<N;i++){
printf("输入作业信息 作业名 \n");
scanf("%s",job[i].JobName);
printf(" 输入到达时间\n");
scanf("%d",&job[i].ArriveTime);
printf(" 输入运行时间\n");
scanf("%d",&job[i].RunTime);
job[i].StartTime=0;
job[i].EndTime=0;
job[i].TurnTime=0;
job[i].DQuanTurnTime=0.0;
}
}
void paixujob(){ //安开始时间将5个jcb排序
for(int k=0;k<N;k++){
jjob[k]=&job[k];
}
Jcb *t;
for(int i=0;i
for(int j=i+1;j
if(jjob[i]->ArriveTimeArriveTime)
{
t=*(jjob+i);
(jjob+i)=(jjob+j);
*(jjob+j)=t;
}
}
}
}
void jieshu(){ //输出结果
for(int k=0;k<N;k++){
jjjob[k]=*jjob[k];
}
for(int i=0;i<N;i++){
jjjob[i].EndTime=jjjob[i].StartTime+jjjob[i].RunTime;
jjjob[i].TurnTime=jjjob[i].EndTime-jjjob[i].ArriveTime;
jjjob[i].DQuanTurnTime=jjjob[i].TurnTime/(float)jjjob[i].RunTime;
if(jjjob[i+1].ArriveTime>jjjob[i].EndTime)
jjjob[i+1].StartTime=jjjob[i+1].ArriveTime;
else
jjjob[i+1].StartTime=jjjob[i].EndTime;
}
printf("输出作业信息 作业名 到达时间 运行时间 开始时间 结束时间 周转时间 带权周转时间\n");
for(int j=0;j<N;j++){
printf("作业信息%d:\n",j);
printf("%s\n",jjjob[i].JobName);
printf("%d %d %d\n",jjjob[i].ArriveTime,jjjob[i].RunTime,jjjob[i].StartTime);
printf("%d %d %d\n",jjjob[i].EndTime,jjjob[i].TurnTime,jjjob[i].DQuanTurnTime);
}
}
void main(){
CreatJcb();
paixujob();
jieshu();
}