2016-04-01 8 views
0
void ArrayDiagonal(double Array[4][4]) 
{ 
    //declare local variables// 
    int i,j=0; 
    double dSum = 0; 
    for(i=0;i<4;i++) 
     { 
      for(j=0;j<4;j++) 
      { 
       if(i==j) 
       { 
        dSum=dSum+Array[i][j]; 
       } 
      } 
     } 
    printf("The sum of the main diagonal elements is = %.2f\n", dSum); 
    OffArrayDiagonal(Array); 
} 

void OffArrayDiagonal(double Array[4][4]) 
{ 
    //declare local variables// 
    int i,j=0; 
    double dOff= 0; 
    for(i=0;i<4;i++) 
     { 
      for(j=4;j=0;j++) 
      { 
       if(i==j) 
       { 
        dOff=dOff+Array[i][j]; 
       } 
      } 
     } 
    printf("The sum of the off diagonal elemets is = %.2f\n", dOff); 
} 

私は、配列の対角要素を一緒に追加する必要があります。最初の関数は正常に動作しますが、正しく動作するにはもう一方の方向を得ることができません。何か案は?2次元配列をcで集計する

答えて

1

1つの問題は、が4で始まり、次に5,6、...に増分(増加)します。また、3ではなく4で始めることをお勧めします。jには何も割り当てたくありません。条件付き。したがって、for(j=3;j>=0;j--)を使用してください。

対角が1次元なので、実際には2次元の繰り返しは必要ありません。したがって、より簡単で効率的な解決法は、第1の対角線について同様であり、同様に第1の対角線についても同様である。

+0

恐ろしい、ありがとう! – JMBTaylor