题目描述
要求输入3个进程的信息,假设这些进程均是在0时刻同时到达,若进程调度采用非剥夺式静态优先级(优先数数值大的表示优先级比较高;如果遇到优先级一样,按照输入顺序执行。),计算并输出平均作业周转时间。
输入格式
程序要求输入3行,以回车符号作为分隔,每行有3个数据,以空格作为分隔。首先输入一个字符串(长度小于等于10),为进程名,第2个数据类型为整型,表示进程的优先数,第3个数据类型为整型,表示进程的运行时间。
输出格式
输出结果为一个浮点数,保留到小数点后一位,为系统的平均作业周转时间。
输入样例 复制
P1 1 1 P2 2 2 P3 3 3
输出样例 复制
4.7
//C++
#include<stdio.h>
struct PG{
char name[10];
int sql;
int time;
}process;
void input(struct PG p[]){
for(int i=0;i<3;i++){
scanf("%s %d %d",p[i].name,&p[i].sql,&p[i].time);
}
}
void count(struct PG p[]){
float sum=0,result=0;
for(int i=0;i<3;i++){
for(int j=0;j<i;j++){
if(p[i].sql>p[j].sql){
struct PG temp;
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
}
sum=(float)p[0].time+(p[0].time+p[1].time)*2+p[2].time;
result=sum/3;
printf("%.1f",result);
}
int main(){
struct PG p[3];
input(p);
count(p);
return 0;
}