2017-11-20 10 views
0

私のプログラムの最後の行に問題があります。プログラムの最初の行に最後の行を乗算する方法を理解できません。乗算テーブル は、第1行に第2行、第2行、第3行などを乗算することによって動作します。2次元配列の要素を掛ける

int main() { 
int temp; 
const int row = 10; 
const int col = 5; 
int arr[row][col]; 
int arr2[10][5]; 

srand(((unsigned)time(0))); 

cout << "Original" << endl; 

for (int i = 0; i<10; i++) { 
    for (int j = 0; j<5; j++) { 
     temp = 1 + rand() % 99; 
     arr[i][j] = temp; 
     int arr2 = arr[i][j]; 
     cout << setw(4) << arr2<< setw(5) << " | "; 

    } 
    cout << endl; 
} 

cout << "\n\nMultiplied rows" << endl; 

    for (int i = 0; i<row; i++) { 
    for (int j = 0; j < col; j++) { 
     if (i < 9) 
      arr[i][j] *= arr[i + 1][j]; 
     else if (i == 9) 

     cout << setw(4) << arr[i][j]<< setw(5) << " | "; 
    } 
    cout << endl; 
} 

return 0; 
} 

(それは私が持つ問題を抱えている最後のelse文です) 私はARRしようとした[I] [J] = ARR [1] [I] * [9] [J] ARRが、そのうまくいきませんでした

+0

コードを少し理解するのは難しいですが、出力を追加することもできます。 –

+1

いくつかの例示的な入力が与えられた場合、期待される出力を質問に追加してください。 2番目に宣言された配列は決して使用されないことに注意してください。 –

答えて

1

まず、あなたの質問に対する答え。あなたはすでにそれを上書きしているためarr[i][j] *= arr[i + 1][j];ラインは、I = 0とj = 0 9

に素朴なソリューションをするだろういずれかの新しいに逓倍番号を格納するために実行したときに は、あなたは本当に最初のものと最後の行を乗算カントまたは古い配列を上書きせずに計算された値を出力するだけです。 それでも、あなたは他の修正をする必要がありますが、私は本当にあなたの宿題をするつもりはありません。

講師にこれを渡している場合は、const int rowとcolが定義されていても、それらを一度だけ使用するというように、いくつかの問題を呼び出すでしょう。したがって、10,5、および9のようなものを入力するのではなく、row、col、row -1とタイプする必要があります。

また最初ARR2変数は使用されず、ループ内の1が同じように簡単には存在しない可能性があり、あなたのコードは、私が上に行く可能性がありますが、私は残りの部分を見つけるためにあなたを残しますcout << setw(4) << arr[i][j]<< setw(5) << " | "; だろう... 幸運。

関連する問題