西安建筑科技大学华清学院课程设计(论文)
10.程序源代码
#include
//------------------------------------------------ void SJF(pro p[],int n); void FCFS(pro p[],int n);
//------------------------------------------------ int pronum; int main() { pro p[20]; cout<<\请输入进程的个数:\ cin>>pronum; cout<<\按时间先后顺序输入进程的提交时间和运行时间\ for(int i=0;i cout<<\第\个进程:\ cin>>p[i].handtime>>p[i].asktime; while(p[i].handtime >p[i].handtime>>p[i].asktime; 第12页 共16页 西安建筑科技大学华清学院课程设计(论文) } } FCFS(p,pronum); SJF(p,pronum); return 0; //cout< //-------------------------- void SJF(pro p[],int n) { int i,order=1; pro *now=&p[0]; pro *temp,*nextrun; p[0].starttime=p[0].handtime; p[0].endtime=p[0].handtime+p[0].asktime; p[0].usetime=p[0].asktime; p[0].right=1.0; p[0].runorder=order; ++order; for(i=0;i cout< 第13页 共16页 西安建筑科技大学华清学院课程设计(论文) // while(nextrun!=NULL) //确定nextrun // { if(nextrun->handtime>=now->endtime) { nextrun->starttime=nextrun->handtime; } else { if(nextrun->next!=NULL) { temp=nextrun->next; while(temp->handtime<=now->endtime) //用来确定nextrun是否改变 { if(temp->asktime nextrun->starttime=now->endtime; } //确定nextrun完毕 if(nextrun!=now->next) { temp=now; //修改链表 while(temp->next!=nextrun) temp=temp->next; temp->next=nextrun->next; temp=now->next; now->next=nextrun; nextrun->next=temp; } //链表修改完毕 第14页 共16页 西安建筑科技大学华清学院课程设计(论文) nextrun->endtime=nextrun->starttime+nextrun->asktime; nextrun->usetime=nextrun->endtime-nextrun->handtime; nextrun->right=nextrun->usetime/nextrun->asktime; nextrun->runorder=order; ++order; //进程信息修改完毕 now=nextrun; } double sumtime=0,sumright=0; cout<<\ cout<<\作业号\\t提交\\t运行\\t开始\\t结束\\t周转\\t带权\\t执行\ for(i=0;i sumtime+=p[i].usetime; sumright+=p[i].right; cout< cout<<\平均 \\t\\t\\t\\t\\t\ } //------------------------- void FCFS(pro p[],int n) { int i; p[0].starttime=p[0].handtime; p[0].endtime=p[0].handtime+p[0].asktime; p[0].usetime=p[0].asktime; p[0].right=1.0; p[0].runorder=1; for(i=1;i 第15页 共16页 西安建筑科技大学华清学院课程设计(论文) { if(p[i].handtime p[i].starttime=p[i].handtime; p[i].endtime=p[i].starttime+p[i].asktime; p[i].usetime=p[i].endtime-p[i].handtime; p[i].right=p[i].usetime/p[i].asktime; p[i].runorder=i+1; } double sumtime=0,sumright=0; cout<<\ cout<<\作业号\\t提交\\t运行\\t开始\\t结束\\t周转\\t带权\\t执行\ for(i=0;i sumtime+=p[i].usetime; sumright+=p[i].right; cout< cout<<\平均 \\t\\t\\t\\t\\t\ } 第16页 共16页