TS223009022 2024-05-19 13:29 采纳率: 0%
浏览 4

怎么使用C语言的指针数组


#include<stdio.h>
double fcfs_weighted_time(int* arrival_time, int* run_time, int num)
{
    double result,transform_time[],etransform_time[],sum;
    int end_time[],start_time[];
    for (int i = 0; i < num; i++)
    {
        sum = 1;
        start_time[0] = arrival_time[0];
        end_time[0] = start_time[0] + run_time[0];
        for (i = 1; i < num; i++)
        {
            start_time[i] = end_time[i - 1];
            end_time[i] = end_time[i - 1] + run_time[i];
            transform_time[i] = end_time[i] - arrival_time[i];
            etransform_time[i] = transform_time[i] / run_time[i];
            sum = sum + etransform_time[i];
        }
       
        result = sum / num;
    }

    
}
int main()
{
    int job_num = 5;
    int arrival_time[] = { 0,1,2,5,7 };
    int run_time[] = { 8,2,3,10,9 };
    double result = fcfs_weighted_time(arrival_time, run_time, job_num);
    printf("%.2lf", result);
    return 0;
}

请帮我改正这段代码

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2024-05-19 13:29
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】:您提问的目的是希望解决如何正确使用C语言中的指针数组,并修正提供的代码中的错误,以确保代码能够正确计算并返回先来先服务(FCFS)加权周转时间。

    【问题出现原因】:

    1. fcfs_weighted_time函数中,transform_timeetransform_timestart_timeend_time数组没有被正确地初始化和声明大小。
    2. for循环中的i变量被重新赋值,这会导致循环逻辑错误。
    3. result变量在循环外被初始化为0.0,但在循环内没有被正确地累加和更新。
    4. fcfs_weighted_time函数没有返回计算结果。

    【问题解决方案】:

    1. 为所有数组分配正确的大小,并在使用前初始化它们。
    2. 修正for循环,避免在循环中重新赋值i
    3. 在循环内部正确更新result变量。
    4. fcfs_weighted_time函数的末尾添加返回语句,返回计算结果。

    【提供代码】:

    #include<stdio.h>
    
    double fcfs_weighted_time(int* arrival_time, int* run_time, int num) {
        double result = 0.0, sum = 0.0;
        int start_time[num], end_time[num], transform_time[num], etransform_time[num];
        
        start_time[0] = arrival_time[0];
        end_time[0] = start_time[0] + run_time[0];
        transform_time[0] = 0; // 第一个任务没有等待时间
        etransform_time[0] = 0; // 第一个任务的加权周转时间为0
        
        for (int i = 1; i < num; i++) {
            start_time[i] = end_time[i - 1];
            end_time[i] = start_time[i] + run_time[i];
            transform_time[i] = end_time[i] - arrival_time[i];
            etransform_time[i] = transform_time[i] > 0 ? (double)transform_time[i] / run_time[i] : 0.0;
            sum += etransform_time[i];
        }
        
        result = sum / num;
        return result; // 返回计算结果
    }
    
    int main() {
        int job_num = 5;
        int arrival_time[] = { 0, 1, 2, 5, 7 };
        int run_time[] = { 8, 2, 3, 10, 9 };
        double result = fcfs_weighted_time(arrival_time, run_time, job_time);
        printf("%.2lf\n", result);
        return 0;
    }
    

    【代码运行方式】:

    • 这段代码需要在支持C语言的编译器环境中运行,如GCC。
    • 编译命令示例:gcc -o program program.c(将program.c替换为实际文件名)。
    • 运行编译后的程序:./program

    【代码预期运行结果】:

    1.50
    

    这个结果是根据先来先服务(FCFS)算法计算出的加权周转时间的平均值。

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月19日

悬赏问题

  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊