?? fcfs.txt
字號:
void CCPUSchedule1Dlg::OnBtnFCFS()
{
// TODO: Add your control notification handler code here
int p=I,m,n,q=2,c=1,IWaitTime=0,IRoundTime=0;
float AverageWaitTime,AverageRoundTime;
int WaitTime[50],RoundTime[50];
CString str_AverageWaitTime,str_AverageRoundTime;
CProcess turn;
//當沒有任何進程而單擊該按鈕時報錯
if(I<1)
MessageBox("警告!沒輸入進程,請輸入!");
else
{
//按照到達次序進行冒泡法排序
for(m=0;m<p;m++)
for(n=0;n<p-m;n++)
{
if(process[n].GetArriveOrder()>process[n+1].GetArriveOrder())
{
turn=process[n];
process[n]=process[n+1];
process[n+1]=turn;
}
else
{
}
}//for
/*用來驗證修改后的數據的
str_AverageWaitTime.Format("%d 到達順序%d,服務%d",1,process[1].GetArriveOrder(),process[1].GetServiceTime());
m_cresultshow.AddString(str_AverageWaitTime);
str_AverageWaitTime.Format("%d 到達順序%d,服務%d",2,process[2].GetArriveOrder(),process[2].GetServiceTime());
m_cresultshow.AddString(str_AverageWaitTime);
*/
//計算等待時間
WaitTime[1]=0;
while(q<=p)
{
WaitTime[q]=process[q-1].GetServiceTime()+WaitTime[q-1];
//第q個進程的等待時間=第q-1個進程的等待時間+第q-1個進程的服務時間
q++;
}
for(q=1;q<=p;q++)
IWaitTime=IWaitTime+WaitTime[q];
AverageWaitTime=(float)IWaitTime/p;
//計算周轉時間
for(c=1;c<=p;c++)
{
RoundTime[c]=WaitTime[c]+process[c].GetServiceTime();
IRoundTime+=RoundTime[c];
}
AverageRoundTime=(float)IRoundTime/p;
//輸出
m_cresultshow.AddString(str_AverageWaitTime);
str_AverageWaitTime.Format("FCFS算法的平均等待時間是:%f",AverageWaitTime);
m_cresultshow.AddString(str_AverageWaitTime);
str_AverageRoundTime.Format(" 平均周轉時間為:%f",AverageRoundTime);
m_cresultshow.AddString(str_AverageRoundTime);
StringCount++;
if(I<1)
{}//無進程時不輸出
else
{
m_request.AddString("先來先服務(FCFS)調度算法是最簡單的調度算法,該算法既可用于作業調度\n");
m_request.AddString("也可用于進程調度。FCFS算法比較利于長作業(進程),而不利于短作業(進程)!\n");
}//else
StaAverageWaitTime[0]=AverageWaitTime;
StaAverageRoundTime[0]=AverageRoundTime;
}//else
}//if
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -