【问题标题】:Showing mean and variance显示均值和方差
【发布时间】:2022-01-09 19:22:30
【问题描述】:

我正在尝试编写一个计算和打印两个数字的均值和方差的问题。我必须创建一个函数来计算它,然后只在主函数中打印结果。我选择的方式是使用一个包含 2 个位置的数组,其中第一个位置的平均值和第二个位置的方差值。 我认为问题在于将值分配给数组,这就是我无法正确执行的操作。有人可以用一些编码向我解释一下吗?如果有另一种不使用数组的方法,它也是有效的。

int * statistics (float x, float y){

    double mean, var;
    int i;
    static int Arr[2];
  
    mean = (x+y)/2;
    var = ((x-mean)*(x-mean) + (y-mean)*(y-mean)) /2;
  
    for (i = 0; i < 2; ++i) {
        if (i=0)
        {
            Arr[i] = mean;
        }
        else
        {
            Arr[i] = var;
        }


    return Arr;
}

int main(){

    int num1, num2, result;

    num1 = 10;
    num2 = 5;

    result = statistics(num1, num2);
    printf("%lf -- %lf", result[0], result[1]);


    return 0;
}

【问题讨论】:

标签: arrays c mean variance


【解决方案1】:

if (i=0)if (i == 0) 不同。

第一个是 0 的赋值,它总是返回 false(如果你要赋值的不是 0,它总是返回 true)。第二个是检查i是否实际上是0。

这在理论上应该会导致一个无限循环,因为i 总是设置回 0,而你不断将var 写入Arr[0]

【讨论】:

    【解决方案2】:

    这里列出了程序的所有问题:

    1. 在此之后应该有一个右大括号来关闭 for 循环:
    else
    {
        Arr[i] = var;
    }
    
    1. 正如@Klickmann 所说,if (i=0)if (i == 0) 不同。
    2. 到处都有很多不正确的类型。

    这行得通:

    #include <stdio.h>
    #include <stdlib.h>
    
    double *statistics(float x, float y)
    {
    
        double mean, var;
        /* malloc */
        double *Arr = malloc(2 * sizeof(double));
    
        mean = (x + y) / 2;
        var = ((x - mean) * (x - mean) + (y - mean) * (y - mean)) / 2;
    
        /* No need for loop */
        Arr[0] = mean;
        Arr[1] = var;
    
        return Arr;
    }
    
    int main()
    {
    
        float num1, num2;
        double *result;
    
        num1 = 10.0F;
        num2 = 5.0F;
    
        result = statistics(num1, num2);
        printf("%lf -- %lf", result[0], result[1]);
        /* Done with result. Free it. */
        free(result);
    
        return 0;
    }
    

    如果你想返回一个数组,你应该使用动态内存分配(malloc()free())。

    【讨论】:

      【解决方案3】:

      我发现使用数组更复杂。还有什么不使用数组的方法?

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      • 您可以定义一个struct,其中包含命名成员variancemean,设置这些值并从函数中返回。
      猜你喜欢
      • 2020-12-26
      • 2012-04-13
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 2022-01-21
      • 1970-01-01
      • 2014-04-27
      相关资源
      最近更新 更多