编辑代码

include <stdiao.h>
typedef struct {
    int pid;            // 进程ID
    int arrival;        // 到达时间
    int burst;          // 服务时间
    int remaining_burst; // 剩余服务时间
    int waiting_time;   // 等待时间
    int turnaround_time; // 周转时间
    int weighted_turnaround_time; // 带权周转时间
    int priority;       // 优先级(适用于优先级调度)
} Process;

//int n;  // 进程数量
int main() {
    printf("请输入进程数量: ");
    scanf_s("%d", &n);
    //int a = n;
    Process ;processes[n];

    // 输入进程的到达时间、服务时间和优先级
    for (int i = 0; i < n; i++) {
        printf("请输入第 %d 个进程的到达时间和服务时间: ", i + 1);
        scanf_s("%d %d", &processes[i].arrival, &processes[i].burst);
        processes[i].pid = i + 1;
    }

    // 按到达时间排序
    qsort(processes, n, sizeof(Process), compare_arrival);

    // 用户选择调度算法
    int choice;
    printf("请选择调度算法:\n1. FCFS\n2. SJF\n3. 优先级调度\n4. 轮询调度 (Round Robin)\n");
    scanf_s("%d", &choice);

    switch (choice) {
    case 1:
        FCFS(processes);
        break;
    case 2:
        SJF(processes);
        break;
    case 3:
        PriorityScheduling(processes);
        break;
    case 4:
    {
        int time_quantum;
        printf("请输入时间片大小: ");
        scanf_s("%d", &time_quantum);
        RoundRobin(processes, time_quantum);
        break;
    }
    default:
        printf("无效选择\n");
    }

    return 0;
}