酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

问题描述:要求输入4个进程的信息,若进程调度采用最短剩余时间优先srtf调度算法(若所需运行时间一样,则按照输入顺序执行。),请按照执行过程的顺序输出各个进程的名称。请用c语言实现。 输入格式:程序要求输入4行,以回车符号作为分隔,每行有3个数据,以空格作为分隔。首先输入一个字符串(长度小于等于10),为进程名,第2个数据类型为整型,表示进程到达的时刻,第3个数据类型为整型,表示进程所需运行的时间。 输出格式:按照执行过程的顺序输出各个进程的名称即一个字符串,进程名称之间用一个空格作为分隔。

```c #include <stdio.h> #include <string.h> typedef struct { char name[11]; int arrival_time; int burst_time; int remaining_time; } Process; void srtf(Process processes[], int n) { int current_time = 0; int completed = 0; int shortest; int finish_time; int check = 0; int minm = 999999; int i; while (completed != n) { for (i = 0; i < n; i++) { if ((processes[i].arrival_time <= current_time) && (processes[i].remaining_time < minm) && processes[i].remaining_time > 0) { minm = processes[i].remaining_time; shortest = i; check = 1; } } if (check == 0) { current_time++; continue; } processes[shortest].remaining_time--; minm = processes[shortest].remaining_time; if (minm == 0) { minm = 999999; } if (processes[shortest].remaining_time == 0) { completed++; check = 0; finish_time = current_time + 1; printf("%s ", processes[shortest].name); } current_time++; } } int main() { Process processes[4]; int i; for (i = 0; i < 4; i++) { scanf("%s %d %d", processes[i].name, &processes[i].arrival_time, &processes[i].burst_time); processes[i].remaining_time = processes[i].burst_time; } srtf(processes, 4); return 0; } ``` 这段代码定义了一个进程结构体,包含进程名、到达时间、运行时间和剩余时间。主函数中读取四个进程的信息,然后调用`srtf`函数来模拟最短剩余时间优先调度算法。在`srtf`函数中,我们通过不断检查当前时间点上哪个进程的剩余时间最短来决定下一个执行的进程,直到所有进程都完成。每次选择进程后,都会打印出该进程的名称。 [2024-11-14 15:54:43 | AI写代码神器 | 622点数解答]

相关提问