在2d数组中乘以元素

时间:2017-11-20 09:02:25

标签: c++

我的程序的最后一行出了问题。我无法弄清楚如何将最后一行乘以我程序中的第一行。乘法表 通过将第一行乘以第二行,第二行乘以第三行,依此类推。

    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;
}

(这是我遇到问题的最后一句话) 我试过arr [i] [j] = arr [1] [i] * arr [9] [j] 但那不起作用

1 个答案:

答案 0 :(得分:1)

首先,回答你的问题。 你不能真正地将最后一行与第一行相乘,因为当i = 0和j = 0到9

执行arr[i][j] *= arr[i + 1][j];行时你已经覆盖了它

天真的解决方案是将相乘的数字存储在新数组中,或者不覆盖旧数组并只打印计算值。 即使这样,你也必须做其他修正,但我不会真的为你做功课。

仅供参考,如果您将其交给教师,他们会调出一些问题,例如您已经定义了const int row和col,但是您只使用了一次。您应该只使用这些变量;因此,不要输入类似10,5和9的内容,而应键入row,col,row -1。

第一个arr2变量也是未使用的,循环中的那个变量很容易就不存在了,你的代码就是cout << setw(4) << arr[i][j]<< setw(5) << " | "; 我可以继续,但我会让你去找其余的...... 祝你好运。