2D 阵列循环显示

2d Array loop display

本文关键字:显示 循环 阵列 2D      更新时间:2023-10-16

我需要像这样创建两个数组的地方要做:

arrayA[2][3];
arrayB[2][3];

第三个数组用于存储 1[2][3] + 2[2][3] 的结果。我只需要使用双循环和双循环来迭代数组中的元素,计算每个补偿的总和并将其存储在第三个数组中。最后,我必须输出第三个数组的总和。

程序需要看起来像这样:

A =
-5 2 8
1 0 0 
B =
1 0 2
0 3 -6  
A + B =
-4 2 10
1 3 -6

但是,我无法让它仅在双 for 循环中处理两个数组,仅此而已。这是我所做的。我只走了这么远,当我尝试在"j 循环"中添加另一个数组时,一切都搞砸了。这是否可能只使用双循环而不使用函数和类似的东西(我在本章中只应该使用循环和逻辑条件(:

int matrixA[2][3] = 
{
    {-5, 2, 8}, 
    {1, 0, 0}
};
int matrixB[2][3] =
{
    {1, 0, 2}, 
    {0, 3, -6}
};
int matrixC[2][3];
for (int i = 0; i < 2; ++i)
{
    for (int j = 0; j < 3; ++j)
    {   
        cout << matrixA[i][j] << " ";
    }
    cout << endl;
}

就像我说的,如果我只显示一个数组数据或使用更多循环,它可以正常工作,但是我只需要使用双 for 循环,没有别的。最重要的是,我不知道如何获得 1 0 0 和 B = 之间的另一个空格,以及如何在此循环中添加 A =、B= 和 A + B =。

编辑:@Niklas,感谢您的回答,但我真的不明白如何"准备"输出。根据我的作业,我需要使用,我引用文本"双 for 循环来迭代矩阵元素,计算每个组件的总和并将结果存储在第三个矩阵中。最后输出矩阵总和。也会将其添加到 OP 中。

根据我所能收集的信息,您的主要目标是将两个矩阵(由 2D 数组表示(相加并将结果存储在 matrixC 中,同时输出它。看来您走在正确的轨道上,只需稍作修改即可实现此目的。

对代码的以下修改应该可以解决问题(仅使用 2 个 for 循环(:

for (int i = 0; i < 2; ++i)
{
    for (int j = 0; j < 3; ++j)
    {   
        matrixC[i][j] = matrixA[i][j] + matrixB[i][j];
        cout << matrixC[i][j] << " ";
    }
    cout << endl;
}

这应该将matrixAmatrixB的相应单元格相加,并将结果存储在matrixC中。它也将被输出。


编辑:根据新信息(您在此答案下的评论(,您似乎需要输出多个这些矩阵,但仍然只有两个for循环。解决方案很简单:创建一个输出矩阵的函数,并在需要输出矩阵时使用它:
void outputMatrix( int mtx[2][3] )
{
    for (int i = 0; i < 2; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {   
            cout << mtx[i][j] << " ";
        }
        cout << endl;
    }
}

现在,如果您需要输出matrixA然后matrixB然后matrixC,只需这样做:

outputMatrix( matrixA );
outputMatrix( matrixB );
outputMatrix( matrixC );

不过,此代码并不是真正的通用代码,因为它依赖于固定的 2x3 数组大小。但我试图为你保持简单。


编辑2:没有函数的解决方案:

创建 3 个std::stringstream,每个矩阵一个。我们不会一次输出所有内容,而是单独缓冲每个矩阵输出,然后连续输出每个矩阵输出。

std::stringstream mtxAOut, mtxBOut, mtxCOut;
for (int i = 0; i < 2; ++i)
{
    for (int j = 0; j < 3; ++j)
    {   
        matrixC[i][j] = matrixA[i][j] + matrixB[i][j];
        mtxAOut << matrixA[i][j] << " ";
        mtxBOut << matrixB[i][j] << " ";
        mtxCOut << matrixC[i][j] << " ";
    }
    mtxAOut << endl;
    mtxBOut << endl;
    mtxCOut << endl;
}
// Now output...
cout << mtxAOut.str() << endl << mtxBOut.str() << endl << mtxCOut.str();

我不知道你学到了什么,有很多方法可以解决这个问题,你的导师可能是更好的建议 - 特别是如果你应该使用特定的技术。

按照 Alex Z 的解决方案进行计算和显示,这听起来像家庭作业,在代码中执行以下操作:

提前为每个矩阵准备输出,并在完成后打印出来。