要求输入3个进程的信息,按照最高响应比优先的调度算法计算并输出每个进程的周转时间。(若两个进程的响应比相同,则优先选择先进入的进程。若两个进程的响应比相同,而且进入时刻也相同,则按照输入的顺序执行,如:P4和P6的响应比相同且进入时刻也相同,如P4先输入则选择P4先执行) 输入格式 程序要求输入3行,以回车符号作为分隔,每行有3个数据,以空格作为分隔。首先输入一个字符串(长度小于等于10),为进程名,第2个数据类型为整型,表示进程的进入时刻,第3个数据类型为整型,表示进程的运行时间。 输出格式 输出三个整数之间,整数之间用空格作为分隔,为每个进程的周转时间。 用C语言写
时间: 2023-06-27 22:01:56 浏览: 52
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_PROCESS 3
typedef struct Process {
char name[11];
int arrival_time;
int burst_time;
int turnaround_time;
int response_ratio;
} Process;
void swap(Process *p1, Process *p2) {
Process temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void sort_by_response_ratio(Process *processes, int n) {
for (int i = 0; i < n; i++) {
processes[i].response_ratio = (processes[i].burst_time + processes[i].arrival_time) / processes[i].burst_time;
}
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (processes[j].response_ratio < processes[j+1].response_ratio) {
swap(&processes[j], &processes[j+1]);
}
else if (processes[j].response_ratio == processes[j+1].response_ratio && processes[j].arrival_time > processes[j+1].arrival_time) {
swap(&processes[j], &processes[j+1]);
}
}
}
}
void calculate_turnaround_time(Process *processes, int n) {
int time = 0;
for (int i = 0; i < n; i++) {
time += processes[i].burst_time;
processes[i].turnaround_time = time - processes[i].arrival_time;
}
}
int main() {
Process processes[MAX_PROCESS];
for (int i = 0; i < MAX_PROCESS; i++) {
scanf("%s %d %d", processes[i].name, &processes[i].arrival_time, &processes[i].burst_time);
}
sort_by_response_ratio(processes, MAX_PROCESS);
calculate_turnaround_time(processes, MAX_PROCESS);
for (int i = 0; i < MAX_PROCESS; i++) {
printf("%d ", processes[i].turnaround_time);
}
return 0;
}
```
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)