2017-10-04 85 views
1

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

输入:

输出:

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

在计算完'avg'之后,您应该将'sum'设置为'0'。 – babon

+1

在开始内部for循环之前,您应该将'sum'设置为'0'。 – tilz0R

+0

您应该将'sum'设置为'0'作为for-i循环的第一条语句。目前还不能保证'sum'在一开始就是0.0。 –

回答

0

移动变量 “和” 第一次在for循环 -

for(i=0;i<4;i++) 
{ 
    float sum = 0; 
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); 
     } 
    } 
} 

函数必须有两个参数,其中,第二个参数是在给定阵列中的行数被调用。

相关问题