#include <stdio.h>
typedef struct {
int arrival_time;
int service_time;
} Process;
void process_scheduling(int N, Process processes[]) {
int total_wait_time = 0;
int total_turnaround_time = 0;
double total_weighted_turnaround_time = 0;
int current_time = 0;
for (int i = 0; i < N; i++) {
int wait_time = current_time - processes[i].arrival_time;
if (wait_time < 0) wait_time = 0;
total_wait_time += wait_time;
int turnaround_time = wait_time + processes[i].service_time;
total_turnaround_time += turnaround_time;
double weighted_turnaround_time = (double)turnaround_time / processes[i].service_time;
total_weighted_turnaround_time += weighted_turnaround_time;
current_time = current_time > processes[i].arrival_time ?
current_time + processes[i].service_time :
processes[i].arrival_time + processes[i].service_time;
}
double avg_wait_time = (double)total_wait_time / N;
double avg_turnaround_time = (double)total_turnaround_time / N;
double avg_weighted_turnaround_time = total_weighted_turnaround_time / N;
printf("%.2f\n", avg_wait_time);
printf("%.2f\n", avg_turnaround_time);
printf("%.2f\n", avg_weighted_turnaround_time);
}
int main() {
int N;
printf("请输入进程个数");
scanf("%d", &N);
Process processes[N];
for (int i = 0; i < N; i++) {
printf("输入每个进程的到达时间和服务时间\n");
scanf("%d %d", &processes[i].arrival_time, &processes[i].service_time);
}
process_scheduling(N, processes);
return 0;
}