2.1 先来先服务源码
void fcfs(Process pro[], int n1)//先来先服务法
{
//先按照提交时间从小到大排列
for (int i = 0; i <= n1 - 2; i++)
{
int min = i;
for (int j = i + 1; j<n1; j++)
{
if (pro[j].arive < pro[min].arive)
{
min = j;
}
}
//将最先到达的进程放到数组的最前面
Process tmpPrp;
memcpy(&tmpPrp, &pro[i], sizeof(Process));
memcpy(&pro[i], &pro[min], sizeof(Process));
memcpy(&pro[min], &tmpPrp, sizeof(Process));
}
cout << "进程调度顺序为:";
for (int n = 0; n <= n1 - 1; n++)
{
cout << pro[n].name ;
if (n < n1 - 1) {
cout << "-->";
}
}
cout << endl;
pro[0].finish = pro[0].arive + pro[0].run;
pro[0].start = pro[0].arive;
pro[0].zz = pro[0].finish - pro[0].arive;
pro[0].dqzz = pro[0].zz / pro[0].run;
for (int n = 1; n <= n1; n++)
{
if (pro[n].arive<pro[n - 1].finish)
{
pro[n].finish = pro[n].run + pro[n - 1].finish;
pro[n].start = pro[n - 1].finish;
pro[n].zz = pro[n].finish - pro[n].arive;
}