double wt[num], tat[num];这行代码报错了,能修改一下吗
时间: 2023-10-03 22:11:03 浏览: 37
感谢您提醒我。由于在C语言中,不允许在函数内定义变量长度为变量的数组。因此,我们需要使用动态内存分配来解决这个问题。我已经修改了代码,使用malloc函数动态分配内存。
以下是修改后的代码:
```c
#include <stdio.h>
#include <stdlib.h>
double sjf_weighted_time(int* arrival_time, int* run_time, int num) {
int i, j, time = 0;
double total_time = 0, total_wt = 0, avg_time, avg_wt;
int temp, temp2;
double *wt, *tat;
wt = (double*) malloc(num * sizeof(double));
tat = (double*) malloc(num * sizeof(double));
for (i = 0; i < num; i++) {
for (j = i + 1; j < num; j++) {
if (run_time[i] > run_time[j]) {
temp = run_time[i];
run_time[i] = run_time[j];
run_time[j] = temp;
temp2 = arrival_time[i];
arrival_time[i] = arrival_time[j];
arrival_time[j] = temp2;
}
}
}
for (i = 0; i < num; i++) {
time += run_time[i];
tat[i] = time - arrival_time[i];
wt[i] = tat[i] - run_time[i];
total_time += tat[i];
total_wt += wt[i];
}
avg_time = total_time / num;
avg_wt = total_wt / num;
free(wt);
free(tat);
return avg_wt;
}
int main() {
int arrival_time[] = {0, 1, 2, 3};
int run_time[] = {2, 4, 6, 8};
int num = sizeof(arrival_time) / sizeof(arrival_time[0]);
double avg_wt = sjf_weighted_time(arrival_time, run_time, num);
printf("The average weighted turnaround time is: %lf\n", avg_wt);
return 0;
}
```
在该程序中,我们使用malloc函数动态分配了两个double类型的数组,即wt和tat。然后,在函数结束时,我们使用free函数释放分配的内存。