2017-11-25 212 views
2

所以..嗨,大家好。我有一個問題,我的代碼,它由具有相同的結果多維數組的..多功能陣列最後一行結果相同

代碼:

#include <iostream> 
#include <vector> 
using namespace std; 

int main() { 
    vector<int> students; 
    double A[6][5]; 

    students.resize(5); 

    for(int i=1;i<=5;i++) { 
     students[i-1] = i; 
    } 

    for(int i=0;i<5;i++) { 
     for(int j=0;j<5;j++) { 
      cin >> A[i][j]; 
     } 
    } 

    int i = 0; 
    for(int j=0;j<5;j++) { 
     A[5][j] = (A[i][0] + A[i+1][0] + A[i+2][0] + A[i+3][0] + A[i+4][0])/5.0; 
    } 

    cout << A[5][0] << endl; 
    cout << A[5][1] << endl; 


    return 0; 
} 

綜上所述我有有6行5列的多官能陣列。 。第6行用於計算平均值。所以我介紹了5行和5列的所有標記。問題是,當我打印出每一個平均值(代碼例如第一次平均值和第二次),這是相同的,我不明白爲什麼。

+0

的事情是無論是j'的'你只添加'循環中的值[0] [0] + A [1] [0] +一[2] [0] + a [3] [0] + a [4] [0]' –

+0

不應該是'A [5] [j] =(A [0] [j] + A [1] [ j] + A [2] [j] + A [3] [j] + A [4] [j])/ 5.0;'? –

+0

哦..我改變得很快到0,我沒有分析..非常感謝。 –

回答

1

有了這個

for(int j=0;j<5;j++) 
{ 
    A[5][j] = (A[i][0] + A[i+1][0] + A[i+2][0] + A[i+3][0] + A[i+4][0])/5.0; 
} 

您反覆在最後一排的每個元素分配的a[0][0]+a[1][0]+a[2][0]+a[3][0]+a[4][0]值。 您需要更改到

for(int j=0;j<5;j++) 
{ 
    A[5][j] = (A[i][j] + A[i+1][j] + A[i+2][j] + A[i+3][j] + A[i+4][j])/5.0; 
} 
1

這裏:

A[5][j] = (A[i][0] + A[i+1][0] + A[i+2][0] + A[i+3][0] + A[i+4][0])/5.0; 

不使用j索引在計算你的二維數組的列。

將其更改爲:

A[5][j] = (A[i][j] + A[i+1][j] + A[i+2][j] + A[i+3][j] + A[i+4][j])/5.0;