1、 float excellent; int start_time; /开始时间 int wait_time; /等待时间 int visited; /已读取次数 JOB() number=0; reach_time=0; reach_hour=0; reach_minite=0; need_time=0; privilege=0; excellent=0.0; start_time=0; wait_time=0; visited=0; JOB& Copy(JOB js) int i=0; while(jsi.number&jsi.number0) i+; JOB *js2=new JOBi;
2、for(int j=0;jCopy (job); int current_hour; int current_minute; int total_time=0; /输出作业流 coutendl;endlFIFO调度算法: cout.setf(2);setw(10)作业号:setw(12) 到达时间:setw(12)开始时间:setw(14)周转时间(分): current_hour=jobs0.reach_hour; current_minute=jobs0.reach_minite; for(int i=0;iquantity;i+) jobsi.start_time=current_hou
3、r*100+current_minute; jobsi.wait_time=(current_hour-jobsi.reach_hour) *60+(current_minute-jobsi.reach_minite)+jobsi .need_time; coutjobsi.number jobsi.reach_timejobsi.start_timesetw(14)jobsi.wait_time current_hour=current_hour+(jobsi.need_time+current_minute)/60; current_minute=(jobsi.need_time+curr
4、ent_minute)%60; total_time+=jobsi.wait_time; 总周转时间:total_time 平均周转时间:total_time/quantity /运算时间短的作业优先算法 void Shorter(JOB job,int quantity) int i,j,p; int current_need_time;时间短作业优先算法:作业号:到达时间:所需时间(分):开始时间:周转时间(分): current_hour=jobsquantity-1.reach_hour; current_minute=jobsquantity-1.reach_minite; for(
5、i=0;i+) current_need_time=30000; for(j=0;j+) if(jobsj.visited=0)&(jobsj.need_timecurrent_need_time) p=j; current_need_time=jobsj.need_time; jobsp.start_time=current_hour*100+current_minute; jobsp.wait_time=(current_hour-jobsp.reach_hour) *60+(current_minute-jobsp.reach_minite)+jobsp .need_time;jobsp
6、.numberjobsp.reach_timejobsp.need_timejobsp.start_timejobsp.wait_time1): current_privilege=30000;(jobsj.privilegecurrent_excellent) current_excellent=jobsj.excellent; jobsp.wait_time=(current_hour-jobsp.reach_hour)*60+(current_minute-jobsp.reach_minite)+jobsp .need_time;jobsp.numberjobsp.reach_timej
7、obsp.start_timeint main(void) *调度模拟*nnn int quantity=0; /数量 JOB jobsMAXJOB;请输入作业数据文件名:n; FILE *fp; char fname20; cinfname; fp=fopen(fname,r);/以只读方式打开文件 if(!fp)打开文件错误!) else while(!feof(fp) fscanf(fp,%d %d %d %d, &jobsquantity.number,jobsquantity.reach_time,jobsquantity.need_time,jobsquantity.privile
8、ge); jobsquantity.reach_hour=jobsquantity.reach_time/100; jobsquantity.reach_minite=jobsquantity.reach_time%100; quantity+; /输出初始作业数据 初始作业数据: cout.setf(2);所需时间(分):优先级:1) for(int i=0; coutjobsi.number jobsi.reach_timejobsi.need_timejobsi.privilegelb:请选择调度算法:tt1-先进先出调度算法ntt2-短作业优先ntt3-优先级调度算法ntt4-响应比最
9、高调度算法 int flag=0;la:flag; switch (flag) case 1: FIFO(jobs,quantity); break;/先进先出调度算法 case 2: Shorter(jobs,quantity);break;/短作业优先 case 3: Privilege(jobs,quantity); /优先级调度算法 case 4: Excellent(jobs,quantity); /响应比最高调度算法 default:cout请输入1-4之间的数goto lb; goto la; return 0;数据文件:data.txt1 700 40 12 723 32 23 821 25 34 823 21 45 900 15 66 912 10 47 930 51 5总结及程序简介:1首先将数据存在data.txt文件中,在主函数中读入数据存入数组jobs中2定义类JOB包含属性:int number;int reach_minite; 方法:构造函数JOB() 复制函数Copy()实现一个对象2分别实现调度算法,然后在主函数中依次调用调试结果:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1