void FCFS(int n); //先来先服务 void SJF(int n); //短作业优先 void print(int n,int array[]); void print(int n,double array[]); void printproceed(int n); //输出FCFS进程运行状态
void main() { int n,i,j; //n:进程数;i、j:循环计数变量 ifstream in(\读文件 string s; for(i=0;i<3,getline(in,s);i++) { //当i=0读入进程数n ;i=1读入各进程到达时间 ;i=2读入各进程服务时间 istringstream sin(s); switch(i) { case 0: sin>>n; break; case 1: for(j=0;j
cout<<\请选择算法: FCFS-->1 SJF-->2 退出-->0\选择:\ int choice; cin>>choice; while(choice!=0) //直到输入值为0跳出循环,结束程序 { while(choice!=1 && choice !=2 && choice!=0 ) { cout<<\ cin>>choice; } if(choice==0) return; if(choice==1) FCFS(n); //进行先来先服务FCFS算法 else SJF(n); //进行短作业优先服务SJF算法 cout<
//------------------先来先服务---------------------------------------- void FCFS(int n) { //第一个进程先服务 FinishTime[0]=ArrivalTime[0]+ServiceTime[0]; WholeTime[0]=FinishTime[0]-ArrivalTime[0]; WeightWholeTime[0]=double(WholeTime[0])/double(ServiceTime[0]); for(int i=1;i
} double totalWT=0,totalWWT=0; for(int j=0;j //------------------短作业优先-------------------------------- void SJF(int n) { int Short; //存放当前最短作业的序号 int Finish=0; //存放当前完成时间 double totalWT=0,totalWWT=0; for(int a=0;a } } } if(tag==1) { //找到短作业 FinishTime[Short]=Finish+ServiceTime[Short]; } if(tag==0) { //未找到 for(int k=0;k for(i=0;i { //计算周转时间、带权周转时间 WholeTime[i]=FinishTime[i]-ArrivalTime[i]; WeightWholeTime[i]=double(WholeTime[i])/double(ServiceTime[i]); } for(int j=0;j { //计算总的周转时间、总的带权周转时间 totalWT+=WholeTime[j]; totalWWT+=WeightWholeTime[j]; } AverageWT_FCFS=totalWT/double(n); AverageWWT_FCFS=totalWWT/double(n); //输出各值 cout<<\短作业优先SJF--------------\cout<<\完成时间:\print(n,FinishTime); cout<<\周转时间:\print(n,WholeTime); cout<<\带权周转时间:\print(n,WeightWholeTime); cout<<\平均周转时间:\ cout<<\平均带权周转时间:\printproceed(n); void print(int n,int array[]) { //打印int型数组 for(int i=0;i { //打印各时刻各进程的运行情况 char ch='A'; for(int i=0;i