2014-10-12 4 views
-4

왜이 코드가 마지막 요소와 함께 작동하지 않는지 설명 할 수 있습니까?루프 스루 어레이가 실패합니다.

#include <iostream> 
using namespace std; 
void main(){ 
    const int n = 10, m = 10; 
    int asd[n][m] = { 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 }, 
     { 1, 2, 3, 4, 5, 6, 7, 8, 0, 9 } }; 
    int sum = 0; 
    for (int i = 0; i < n; i++){ 
     cout << "Array[" << i << "] => " << asd[i][m] << endl; 
     sum += asd[i][m]; 
    } 
    cout << "Sum of first col " << sum << endl; 
} 

내가 nm을 제거하면, 설정하고 배열 asd[10][10] - 잘 작동하는 이유는 무엇입니까?

+7

을 사용할 수 있습니다 SUM 모든 열에 대한 인쇄하려면210 'ASD [I] [10]'i''의 모든 값에 대한 범위를 벗어났습니다. – juanchopanza

답변

3

마지막 반복의 범위를 벗어난 요소를 인쇄 (및 이전 것들에서 잘못된 모든 요소지고) 대신

cout << "Array[" << i << "] => " << asd[i][10] << endl; 
              ^^ 

이 작동을하고 있기 때문에 (내가 제대로 해석 가정 무엇 ') 할 노력하고 :

for (int i = 0; i < n; i++){ 
    cout << "Array[" << i << "] => " << asd[i][0] << endl; 
    sum += asd[i][0]; 
} 
cout << "Sum of first col " << sum << endl; // 10 

보너스 팁 :

  • 주요 수오 LD 반환 INT는 :

    int main() { 
    
  • 전역 네임 스페이스를 10 행을 따라서 만이 9.So까지 인덱스를 낳게 될 것이다 배열 contians으로

1

변경

for (int i = 0; i < n; i++){ 
    cout << "Array[" << i << "] => " << asd[i][0] << endl; 
    sum += asd[i][0]; 
} 

이 루프

for (int i = 0; i < n; i++){ 
    cout << "Array[" << i << "] => " << asd[i][m] << endl; 
    sum += asd[i][m]; 
} 

는 첫 번째 열의 원소의 합을 계산하는 것을 제공했다.

는 반환 형식을 귀하의 질문에 다음 프로그램이 정의되지 않은 한 행동으로 int

int main() 

를 가진다 주요 기능을 고려. 예를 들어 표현식

asd[0][m]asd[1][0]과 같습니다.

및 표현 asd [9] [m]은 asd [10] [0]과 동일합니다. 그래서 모든 것은 배열을 넘어서 메모리에 저장되는 것에 달려 있습니다.

0

를 오염 것 using namespace std; 사용이 바운드 밖으로 될 것입니다

for (int i = 0; i < n; i++){ 
    cout << "Array[" << i << "] => " << asd[i][0] << endl; 
    sum += asd[i][0]; 
} 
,691,363으로

for (int i = 0; i < n; i++){ 
    cout << "Array[" << i << "] => " << asd[i][m] << endl; 
    sum += asd[i][m]; 
} 

당신이 다음 아래 코드

for (int j=0;j<m;j++){ 
    int sum=0; 
for (int i = 0; i < n; i++){ 
     sum += asd[i][j]; 
    } 
    cout << "Sum of" << j <<"col " << sum << endl; 
}