¼ÆËã»ú²Ù×÷ϵͳ¿Î³ÌÉè¼ÆÔ´´úÂ롶ͨÓô¦Àí»úµ÷¶ÈÑÝʾ³ÌÐòÔ´´úÂë¡· ÏÂÔØ±¾ÎÄ

¡¶Í¨Óô¦Àí»úµ÷¶ÈÑÝʾ³ÌÐòÔ´´úÂë¡·

//¶Ì×÷ÒµÓÅÏÈËã·¨ #define MaxNum 100 #include #include #include struct Process_struct{

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;