【操作系统】题目2:进程调度2-最高响应比优先计算每个作业的周转时间

问题描述:要求输入3个进程的信息,按照最高响应比优先的调度算法计算并输出每个进程的周转时间。(若两个进程的响应比相同,则优先选择先进入的进程.若两个进程的响应比相同,而且进入时刻也相同,则按照输入的顺序执行,如:P4和P6的响应比相同且进入时刻也相同,如P4先输入则选择P4先执行)

输入格式:程序要求输入3行,以回车符号作为分隔,每行有3个数据,以空格作为分隔。首先输入一个字符串(长度小于等于10),为进程名,第2个数据类型为整型,表示进程的进入时刻,第3个数据类型为整型,表示进程的运行时间。

输出格式:输出三个整数之间,整数之间用空格作为分隔,为每个进程的周转时间。

样例输入1:

P1 1 1

P2 2 2

P3 3 3

样例输出1:

1 2 4

样例输入2:

P1 1 4

P2 2 8

P3 3 1

样例输出2:

4 12 3

#include
using namespace std;

typedef struct PCB{
    char name[10]; //进程名
    int intime; //进入时刻 
    int ytime; //运行时间 
    int zztime; //周转时间 
    int flag; //进程状态 
    int number; //输入顺序 
    int wtime; //等待时间 
}PCB; //定义一个进程的结构体 

bool sort1(PCB p,PCB q)
{
    if(p.intime!=q.intime)
        return p.intimeq.wtime/q.ytime;
    else 
        return p.numberk)
            k=p[j].intime+p[j].ytime;
        else
            k+=p[j].ytime;
        for(n=j+1;n<3;n++)
        {
            if(p[n].flag==1&&p[n].intime0)
            sort(p+j,p+3,sort2);
    }
    sort(p,p+3,sort4);
    for(i=0;i<3;i++){
        printf("%d ",p[i].zztime);
    }
}

你可能感兴趣的:(操作系统实训,c++,算法)