2017-11-25 184 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; 
相关问题