2017-02-26 28 views
1

実際に私は2d配列をユーザごとに印刷したいと考えていました。その後、行番号を追加します。 行インデックス番号を印刷する方法がわかりません。コードは: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; 
} 

2番目の最後の行では、[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];