2017-02-26 1 views
1

사실 나는 사용자가 2 차원 배열을 인쇄하려고했습니다. 그런 다음 숫자 행을 현명하게 추가하십시오. 행 인덱스 번호를 인쇄하는 방법을 모르겠습니다. 코드는 다음과 같습니다.2 차원 배열 오류 : 행 인덱스 인쇄

int arr[3][3]; 
int sum = 0; 

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

cout << endl; 
for (int i = 0; i < 3; i++) 
{ 
    for (int j= 0; j < 3; j++) 
     cout<< arr[i][j]<<" "; 
    cout << endl; 
} 


for (int x = 0; x < 3; x++) 
{ 
    for (int y = 0; y < 3; y++) 

     sum += arr[x][y]; 
    cout << "Row: " << arr[x] << "addition is:" << sum << endl; 
    sum = 0; 
} 

두 번째 마지막 행에 arr [x] 주소를 인쇄하십시오. 만약 내가 arr [x] [y]를 사용하면 ('y'는 정의되지 않았다). 왜 'y'가 정의되지 않았습니까? 그리고 친절하게 누군가가 대각선으로 숫자를 추가하는 법을 알려줍니다 ...?

답변

2

우물 arr[x]은 첫 번째 요소에 대한 포인터로 사라지는 배열입니다. 따라서 arr[x]을 인쇄하면 실제로는 &arr[x][0]이 인쇄됩니다.

난 당신 만 x을 인쇄 할 가정

cout << "Row: " << x << ... 
0

난 항상 루프에 괄호를 사용하도록 건의 할 것입니다. 이

for (int y = 0; y < 3; y++) 
    sum += arr[x][y]; 
cout << "Row: " << arr[x] << "addition is:" << sum << endl; 

for (int y = 0; y < 3; y++) { 
    sum += arr[x][y]; 
} 
cout << "Row: " << arr[x] << "addition is:" << sum << endl; 

에 해당 루프 y의 외부에서 선언되지 않았습니다. 당신은 아마 또한

for (int y = 0; y < 3; y++) { 
    sum += arr[x][y]; 
    cout << "Row: " << arr[x] << "addition is:" << sum << endl; 
} 

를 원했다, 당신은 당신이 x 또는 y 있지만 인덱스 [x][y]에있는 요소가 arr[x][y] 중 하나 인 행 인덱스를 인쇄하고 싶은 말은.

1

'y'는 범위를 벗어 났으므로 정의되지 않습니다.

은 당신이 할 수있는, 대각선으로 숫자를 추가하려면

sum = 0; 
for (int i = 0; i < 3; ++i) 
    sum += arr[i][i];