📄 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 + -