作业名 到达时间 服务时间
a 0 6
b 2 50
c 5 20
d 5 10
e 12 40
f 15 8
#include "stdafx.h"
#include<iostream>
#include<iomanip>
#include<queue>
#include<string>
using namespace std;
class JOB//类
{
public:
string name; //进程名
float arrivetime;//到达时间
float servicestime;//服务时间
float starttime; //开始时间
float finishtime;//完成时间
float zztime; //周转时间
float dqzztime; //带权周转时间
void Show()//类方法
{
cout.width(9);
cout<<name;
cout.width(9);
cout<<arrivetime;
cout.width(11);
cout<<servicestime;
cout.width(13);
cout<<starttime;
cout.width(10);
cout<<finishtime;
cout.width(10);
cout<<zztime;
cout.width(9);
cout<<dqzztime<<endl;
}
};
int input(int num)
{
//cout<<"(FCFS)请输入作业数目:";
//cin>>num;
queue<JOB> jobQue;
JOB job1;
cout<<"\n请输入作业名,到达时间,运行时间:";
cin>>job1.name>>job1.arrivetime>>job1.servicestime;
job1.starttime=job1.arrivetime;
job1.finishtime=job1.starttime+job1.servicestime;
job1.zztime=job1.finishtime-job1.arrivetime;
job1.dqzztime=job1.zztime/job1.servicestime;
jobQue.push(job1);
JOB job2;
for (int i=2; i<=num; i++)
{
job2=jobQue.back();
cout<<"\n请输入作业名,到达时间,运行时间:";
cin>>job1.name>>job1.arrivetime>>job1.servicestime;
job1.starttime=job2.finishtime;
job1.finishtime=job1.starttime+job1.servicestime;
job1.zztime=job1.finishtime-job1.arrivetime;
job1.dqzztime=job1.zztime/job1.servicestime;
jobQue.push(job1);
}
//先来先服务
cout<<"\n先来先服务算法(FCFS):"<<endl;
cout<<"\n作业名 到达时间 服务时间 开始执行时间 完成时间 周转时间 带权周转时间"<<endl;
double sum_dq=0;
double sum_pj=0;
cout.setf(ios::left);
while(!jobQue.empty())
{
job1=jobQue.front();
job1.Show();
//sum+=(double)job1.zztime/job1.arrivetime;
sum_dq+=(double)job1.dqzztime;
sum_pj+=(double)job1.zztime;
jobQue.pop();
}
cout<<"\n先来先服务算法(FCFS)平均带权周转时间:"<<sum_dq/num<<endl;
cout<<"\n先来先服务算法(FCFS)平均周转时间:"<<sum_pj/num<<endl;
return 0;
};
int main(int argc, char* argv[])
{
int job_count;
cout<<"请输入一组作业的数:";
cin>>job_count;
input(job_count);
return 0;
}