在 2D 数组中乘以元素

Multiplying elements in 2d array

本文关键字:元素 2D 数组      更新时间:2023-10-16

我的程序的最后一行有问题。我不知道如何将程序中的最后一行乘以第一行。乘法表通过将第一行乘以第二行、第二行乘以第三行来工作,依此类推。

    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 << "nnMultiplied 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]*arr[9][j]但这没有用

首先,回答您的问题。您实际上无法将最后一行与第一行相乘,因为当为 i = 0 和 j = 0 执行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) << " | "; 我可以继续,但我会让你去找剩下的......祝你好运。