2017-10-04 4 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

inner forループを開始する前に 'sum'を' 0'に設定する必要があります。 – tilz0R

+0

for-iループの最初の文として 'sum'を '0'に設定する必要があります。現時点では、最初は 'sum'が0.0であることは保証されていません。 –

答えて

0

移動変数「合計」 -

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

関数内の2つのバグがあります。

最初の変数は、変数sumが最初に初期化されておらず、外側ループの各繰り返しで初期化されていないことです。

第2のバグは、各行の最後の要素が平均の計算に参加すべきでないということです。

関数は次のよう

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); 
     } 
    } 
} 

を見ることができますこの点を考慮関数は2番目の引数が与えられた配列の行数である2つの引数で呼び出さなければなりません。

関連する問題