2017-10-04 46 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); 
     } 
    } 
} 

函數必須有兩個參數,其中,第二個參數是在給定陣列中的行數被調用。

相關問題