#include<iostream>
using namespace std;
struct PCB
{
char jobname;//任务名称
int Tin;//到达时间
int Tr;//服务时间
int Ts;//开始时间
int Tc;//结束时间
int T;//周转时间
float W;//带权周转时间
}PCB[10];
void Rank(int job)//排序
{
for (int i = 0;i < job - 1;i++)
{
for (int j = 0;j < job - 1 - i;j++)
{
if (PCB[j].Tin > PCB[j + 1].Tin)
{
struct PCB t;
t = PCB[j];PCB[j] = PCB[j + 1];PCB[j + 1] = t;
}
}
}
}
void FCFS(int job)
{
float T1=0,W1=0;//平均周转时间,平均带权周转时间
cout << "Please input jobs' Name & Tin & Tr!" << endl;
for (int i = 0;i < job;i++)
cin >> PCB[i].jobname >> PCB[i].Tin >> PCB[i].Tr;
Rank(job);
//按照到达时间升序排序
for (int i = 0;i < job;i++)
{
if (i == 0)
PCB[i].Ts = 0;
else
PCB[i].Ts = PCB[i - 1].Tc;
PCB[i].Tc = PCB[i].Ts + PCB[i].Tr;
PCB[i].T = PCB[i].Tc - PCB[i].Tin;
PCB[i].W = PCB[i].T / float(PCB[i].Tr);
T1 += PCB[i].T;
W1 += PCB[i].W;
}
T1 = T1 / job;
W1 = W1 / job;
cout << "T1=" << T1 << endl;
cout << "W1=" << W1 << endl;
}
int main()
{
int job;
cout << "Please input the number of jobs!" << endl;
cin >> job;
FCFS(job);
cout << "work" << '\t' << "Tin" << '\t' << "Tr" << '\t' << "Ts" << '\t' << "Tc" << '\t' << "T" << '\t' << "W" << '\t' << endl;
for (int i = 0;i < job;i++)
{
cout << PCB[i].jobname << '\t' << PCB[i].Tin << '\t' << PCB[i].Tr << '\t' << PCB[i].Ts << '\t' << PCB[i].Tc << '\t' << PCB[i].T << '\t' << PCB[i].W << endl;
}
system("pause");
return 0;
}
FCFS
最新推荐文章于 2021-08-28 16:47:00 发布