计算每行的平均值并存储在最后一个元素中

时间:2017-10-04 12:40:48

标签: c arrays multidimensional-array average

我需要计算每行的平均值并存储在最后一个元素中。我设法做了,但后续行是前一行的累计平均值。 例如:

输入:

1 2 3 0

4 5 6 0

输出:

1.00 2.00 3.00 2.00

4.00 5.00 6.00 7.00 (应该是5.00)

这是我的代码

   void findAverage2D(float matrix[4][4])
     {    
       int i,j = 0;
       float sum,avg=0;

       for(i=0;i<4;i++)
     {
        for(j=0; j<4;j++)
        {
            sum+= matrix[i][j];
        }
        avg = sum/3;
            matrix[i][3] =avg;

    }
}

提前致谢。 :)

2 个答案:

答案 0 :(得分:0)

移动变量&#34;总和&#34;在第一个for循环中 -

 for(i=0;i<4;i++)
 {
    float sum = 0;

答案 1 :(得分:0)

该功能有两个错误。

第一个是变量sum最初没有初始化,也没有在外循环的每次迭代中初始化。

第二个错误是每行的最后一个元素不应该参与平均值的计算。

考虑到这一点,该功能可以采用以下方式

    void findAverage2D( float matrix[][4], size_t n )
    {
        const size_t M = 4;

        for ( size_t i = 0; i < n; i++ )
        {
            float sum = 0.0f;
            for ( size_t j = 0; j < M - 1; j++ )
            {
                sum += matrix[i][j];
            }
            matrix[i][M-1] = sum / ( M - 1 );
        }
    }
}

必须使用两个参数调用该函数,其中第二个参数是给定数组中的行数。