源程序文件
#include
#include
#include
#define MAX 100 //最多能管理的作业数目
struct jcb //作业控制块JCB,定义为结构体
{
char name[10]; //作业名
float arrivetime; //作业到达时间
float servicetime;//作业服务时间
float starttime; //作业开始执行时间
float finishtime; //作业完成时间
float zztime; //作业周转时间
float avezztime; //作业平均周转时间
};
jcb a[MAX];
void input(jcb *p,int N)
{
int i;
printf("请分别输入:\n\t作业名,到达时间,服务时间(如:JOB1 5 10)\n\n");
for(i=0;i<=N-1;i++)
{
printf("请输入第%d个作业信息:",i+1); scanf("%s%f%f",&p[i].name,&p[i].arrivetime,&p[i].servicetime);
printf("\n");
}
}
void print(
jcb *p;
float arrivetime;
float servicetime;
float starttime;
float finishtime;
float zztime;
float avezztime;
int N)
{
int k;
printf("调度顺序:");
printf("%s",p[0].name);
for(k=1;k%s",p[k].name);
}
printf("\n\n");
printf("\t作业信息:\n");
printf("\nname\tarrive\tservice\tstart\tfinish\tzz\tavezz\n");
for(k=0;k<=N-1;k++)
{
{
int k;
for(k=0;k<=N-1;k++)
{
if(k==0)
{
p[k].starttime=p[k].arrivetime;
p[k].finishtime=p[k].arrivetime+p[k].servicetime;
}
else
{
p[k].starttime=p[k-1].finishtime;
p[k].finishtime=p[k-1].finishtime+p[k].servicetime;
}
}
for(k=0;k<=N-1;k++)
{
p[k].zztime=p[k].finishtime-p[k].arrivetime;
p[k].avezztime=p[k].zztime/p[k].servicetime;
}
}
void jcbf(jcb *p,int N)
{
float
arrivetime=0,servicetime=0,starttime=0,finishtime=0,zztime=0,avezztime=0; sort(p,N);
for(int m=0;mMAX)
{
printf("\t!!输入的作业数目太大,请输入不大于%d的整数\n",MAX); printf("按Q或者q退出程序按其他任意键继续测试.");
ch = getch();
if(ch=='Q'||ch=='q')
{
break;
}
else continue;
}
input(a,N);
jcb *b=a;
jcbf(b,N);
printf("按Q或者q退出程序,按其他任意键继续测试");
ch = getch();
if(ch=='Q'||ch=='q')
{
break;
}
} return 0; }
本文档为【短作业优先调度算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。