标签:
#include <stdio.h> #include <string.h> void main() { int i=0,j=0,finishtime=0,rotatetime=0,n=0,k=0,l,m; float a,b; int starttime,temp,max=1; int reachtime[24],runtime[24]; FILE *fp; char str[1000]; fp=fopen("d:/diaodu.txt","rt"); if(fp==NULL) { printf("cannot open file\n"); return; } printf("到达时间\t所需运行时间\n"); while (fgets(str,1000,fp)) { sscanf(str,"%d,%d\n",reachtime+i,runtime+i); printf("%d\t\t%d\n",reachtime[i],runtime[i]); i++; } fclose(fp); for(j=0;j<i;j++) { for (k=0;k<i-j;k++) { if (reachtime[k]>reachtime[k+1]) { temp=runtime[k]; runtime[k]=runtime[k+1]; runtime[k+1]=temp; temp=reachtime[k]; reachtime[k]=reachtime[k+1]; reachtime[k+1]=temp; } } } printf("***********************\n"); printf("1.fcfs\n2.SJF\n3.HRRN\n"); printf("***********************\n"); scanf("%d",&n); starttime=reachtime[1]; if(n==1) { printf("You want to run fcfs:\n"); printf("作业编号\t开始时间\t运行时间\t完成时间\t周转时间\t带权周转时间\n"); for(j=1;j<=i;j++) { finishtime=starttime+runtime[j]; rotatetime=starttime+runtime[j]-reachtime[j]; printf("%d\t%d\t\t%d\t\t%d\t\t%d\t\t%f\n",j,starttime,runtime[j],finishtime,rotatetime,(float)(starttime+runtime[j]-reachtime[j])/runtime[j]); a+=rotatetime; b+=(starttime+runtime[j]-reachtime[j])/runtime[j]; starttime=starttime+runtime[j]; if(starttime<reachtime[j+1]) starttime=reachtime[j+1]; } printf("平均周转时间为:%f\n",a/i); printf("平均带权周转时间为:%f\n",b/i); } if(n==2) { printf("You want to run sjf\n"); printf("作业编号\t开始时间\t运行时间\t完成时间\t周转时间\t带权周转时间\n"); starttime=reachtime[1]; for(j=1;j<=i;j++) { finishtime=starttime+runtime[j]; rotatetime=starttime+runtime[j]-reachtime[j]; printf("%d\t%d\t\t%d\t\t%d\t\t%d\t\t%f\n",j,starttime,runtime[j],finishtime,rotatetime,(float)(starttime+runtime[j]-reachtime[j])/runtime[j]); a+=rotatetime; b+=(starttime+runtime[j]-reachtime[j])/runtime[j]; for(k=j;k<=i;k++) { if(starttime+runtime[j]>reachtime[k+1]) max=k; } for(l=j;l<max;l++) { for (m=0;m<max-l;m++) { if (runtime[m]>runtime[m+1]) { temp=runtime[m]; runtime[m]=runtime[m+1]; runtime[m+1]=temp; temp=reachtime[m]; reachtime[m]=reachtime[m+1]; reachtime[m+1]=temp; } } } starttime=starttime+runtime[j]; if(starttime<reachtime[j+1]) starttime=reachtime[j+1]; } printf("平均周转时间为:%f",a/i); printf("平均带权周转时间为:%f",b/i); } }
标签:
原文地址:http://www.cnblogs.com/zhushengjie/p/4486676.html