用c++写一个计算进程周转时间和带权周转时间的代码
时间: 2024-06-01 15:10:27 浏览: 19
#include <stdio.h>
typedef struct {
int pid; // 进程ID
int arrival_time; // 到达时间
int burst_time; // 执行时间
int completion_time; // 完成时间
int turnaround_time; // 周转时间
float waiting_time; // 等待时间
float weighted_turnaround_time; // 带权周转时间
} Process;
void calculate_completion_time(Process *processes, int n) {
int current_time = processes[0].arrival_time;
for (int i = 0; i < n; i++) {
if (processes[i].arrival_time > current_time) {
current_time = processes[i].arrival_time;
}
processes[i].completion_time = current_time + processes[i].burst_time;
current_time = processes[i].completion_time;
}
}
void calculate_turnaround_time(Process *processes, int n) {
for (int i = 0; i < n; i++) {
processes[i].turnaround_time = processes[i].completion_time - processes[i].arrival_time;
}
}
void calculate_waiting_time(Process *processes, int n) {
for (int i = 0; i < n; i++) {
processes[i].waiting_time = processes[i].turnaround_time - processes[i].burst_time;
}
}
void calculate_weighted_turnaround_time(Process *processes, int n) {
for (int i = 0; i < n; i++) {
processes[i].weighted_turnaround_time = (float) processes[i].turnaround_time / processes[i].burst_time;
}
}
void print_results(Process *processes, int n) {
float total_waiting_time = 0.0;
float total_weighted_turnaround_time = 0.0;
printf("PID\tArrival Time\tBurst Time\tCompletion Time\tTurnaround Time\tWaiting Time\tWeighted Turnaround Time\n");
for (int i = 0; i < n; i++) {
printf("%d\t%d\t\t%d\t\t%d\t\t%d\t\t\t%.2f\t\t%.2f\n", processes[i].pid, processes[i].arrival_time, processes[i].burst_time,
processes[i].completion_time, processes[i].turnaround_time, processes[i].waiting_time, processes[i].weighted_turnaround_time);
total_waiting_time += processes[i].waiting_time;
total_weighted_turnaround_time += processes[i].weighted_turnaround_time;
}
printf("\nAverage Waiting Time: %.2f\n", total_waiting_time / n);
printf("Average Weighted Turnaround Time: %.2f\n", total_weighted_turnaround_time / n);
}
int main() {
int n;
printf("Enter the number of processes: ");
scanf("%d", &n);
Process processes[n];
for (int i = 0; i < n; i++) {
printf("Enter arrival time and burst time for process %d: ", i + 1);
scanf("%d %d", &processes[i].arrival_time, &processes[i].burst_time);
processes[i].pid = i + 1;
}
calculate_completion_time(processes, n);
calculate_turnaround_time(processes, n);
calculate_waiting_time(processes, n);
calculate_weighted_turnaround_time(processes, n);
print_results(processes, n);
return 0;
}