先来先服务调度算法c++版

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cherish_CX/article/details/53192279

作业名                 到达时间                     服务时间

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;
}




猜你喜欢

转载自blog.csdn.net/cherish_CX/article/details/53192279
今日推荐