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

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

#include <stdio.h> #include <string.h> typedef struct { char name[10]; int arrival_time; int burst_time; } Process; void srtf(Process processes[], int n) { int remaining_time[n]; int complete = 0; int t = 0; int shortest = 0; int finish_time; for (int i = 0; i < n; i++) { remaining_time[i] = processes[i].burst_time; } while (complete < n) { int min_burst = 9999; for (int i = 0; i < n; i++) { if (processes[i].arrival_time <= t && remaining_time[i] < min_burst && remaining_time[i] > 0) { min_burst = remaining_time[i]; shortest = i; } } remaining_time[shortest]--; t++; if (remaining_time[shortest] == 0) { complete++; finish_time = t; printf("%s ", processes[shortest].name); } } } int main() { Process processes[4]; for (int i = 0; i < 4; i++) { scanf("%s %d %d", processes[i].name, &processes[i].arrival_time, &processes[i].burst_time); } srtf(processes, 4); return 0; } [2024-11-14 15:45:51 | AI写代码神器 | 780点数解答]

相关提问