¡¶Í¨Óô¦Àí»úµ÷¶ÈÑÝʾ³ÌÐòÔ´´úÂë¡·
//¶Ì×÷ÒµÓÅÏÈËã·¨ #define MaxNum 100 #include
int Number; //½ø³Ì±àºÅ char Name[MaxNum]; //½ø³ÌÃû³Æ
int ArrivalTime; //µ½´ïʱ¼ä
int ServiceTime; //¿ªÊ¼ÔËÐÐʱ¼ä int FinishTime; //ÔËÐнáÊøÊ±¼ä int WholeTime; //ÔËÐÐʱ¼ä
int run_flag; //µ÷¶È±êÖ¾
int order; //ÔËÐдÎÐò
double WeightWholeTime; //ÖÜתʱ¼ä
double AverageWT_FCFS,AverageWT_SJF; //ƽ¾ùÖÜתʱ¼ä
double AverageWWT_FCFS,AverageWWT_SJF; //ƽ¾ù´øÈ¨ÖÜתʱ¼ä }Process[MaxNum];
int N; //ʵ¼Ê½ø³Ì¸öÊý int SJF(); //¶Ì×÷ÒµÓÅÏÈ int SJF(){ //¶Ì×÷ÒµÓÅÏÈËã·¨
int temp_time=0; //µ±ÆÚÄÇʱ¼ä int i=0,j;
int number_schedul,temp_counter; //½ø³Ì±àºÅ£¬µ±Ç°ÒÑÖ´Ðнø³Ì¸öÊý float run_time;
run_time=Process[i].WholeTime; j=1;
while((j ÓÐÁ½¸ö½ø³Ìͬʱµ½´ï { if(Process[j].WholeTime e; } { } j++; run_time=Process[i].WholeTime; i=j; //²éÕÒÏÂÒ»¸ö±»µ÷¶ÈµÄ½ø³Ì //¶ÔÕÒµ½µÄÏÂÒ»¸ö±»µ÷¶ÈµÄ½ø³ÌÇóÏàÓ¦µÄ²ÎÊý number_schedul=i; Process[number_schedul].ServiceTime=Process[number_schedul].ArrivalTim Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime +Process[number_schedul].WholeTime; Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; Process[number_schedul].order=1; temp_counter=1; while(temp_counter for(j=0;j for(j=0;j if((Process[j].ArrivalTime<=temp_time)&&(!Process[j].run_flag)) if(Process[j].WholeTime run_time=Process[j].WholeTime; if((Process[j].ArrivalTime<=temp_time)&&(!Process[j].run_flag)) { } run_time=Process[j].WholeTime; number_schedul=j; break; } } number_schedul=j; //²éÕÒÏÂÒ»¸ö±»µ÷¶ÈµÄ½ø³Ì //¶ÔÕÒµ½µÄÏÂÒ»¸ö±»µ÷¶ÈµÄ½ø³ÌÇóÏàÓ¦µÄ²ÎÊý Process[number_schedul].ServiceTime=temp_time; Process[number_schedul].FinishTime=Process[number_schedul].ServiceTime +Process[number_schedul].WholeTime; } int Pinput(); //½ø³Ì²ÎÊýÊäÈë int Poutput(); //µ÷¶È½á¹ûÊä³ö int Pinput() //½ø³Ì²ÎÊýÊäÈë { int i; printf(\ÇëÊäÈë½ø³Ì¸öÊý:\\n\scanf(\for(i=0;i printf(\printf(\ÇëÊäÈëÒ»¸ö½ø³Ì:\\n\printf(\ÇëÊäÈë½ø³ÌÃû³Æ:\\n\scanf(\ Process[number_schedul].run_flag=1; temp_time=Process[number_schedul].FinishTime; temp_counter++; Process[number_schedul].order=temp_counter; }return 0; printf(\ÇëÊäÈëµ½´ïʱ¼ä:\\n\ scanf(\printf(\ÇëÊäÈë·þÎñʱ¼ä:\\n\ scanf(\ } Process[i].ServiceTime=0; Process[i].FinishTime=0; Process[i].WeightWholeTime=0; Process[i].order=0; Process[i].run_flag=0; }return 0; int Poutput() //µ÷¶È½á¹ûÊä³ö { int i; float turn_round_time=0,f1,w=0; printf(\ ½ø³ÌÃû³Æ µ½´ïʱ¼ä ÔËÐÐʱ¼ä ¿ªÊ¼ÔËÐÐʱ¼ä ½áÊøÊ±¼ä Ö´ÐÐ˳Ðò ÖÜ ×ªÊ±¼ä ´øÈ¨ÖÜתʱ¼ä\\n\ printf(\ %s %d %d %d %d %d %f Process[i].WeightWholeTime=Process[i].FinishTime-Process[i].ArrivalTime; f1=Process[i].WeightWholeTime/Process[i].WholeTime; turn_round_time+=Process[i].WeightWholeTime; w+=f1; printf(\ʱ¿Ì%d :\for(i=0;i %f\\n\viceTime,Process[i].FinishTime,Process[i].order,Process[i].WeightWholeTime,f1); } } printf(\printf(\return 0;