2D 阵列循环显示
2d Array loop display
我需要像这样创建两个数组的地方要做:
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;
}
这应该将matrixA
和matrixB
的相应单元格相加,并将结果存储在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 的解决方案进行计算和显示,这听起来像家庭作业,在代码中执行以下操作:
提前为每个矩阵准备输出,并在完成后打印出来。
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- 密码登录程序将永远循环并显示不正确的结果
- 显示循环双端队列的功能
- OpenCV QT,显示视频的帧(不使用while循环)
- C++ 我的开关格式中的循环不允许我显示菜单选项或接受输入?
- 为什么这个 for 循环总是显示"o"。C++
- 如何向用户显示特定错误,要求他/她使用循环再次提供输入?
- 螺旋矩阵在最后一个"for"循环中中断,不显示任何内容
- 在循环中显示不同值的初始化数组
- 变量在循环中显示,但不在循环中显示
- 它不显示数据,只显示永无止境的循环
- 我的期末考试遇到了麻烦.代码不断循环回到我的订购菜单,不会显示我的总价
- 使用 while 循环显示顺序变量的值
- 如何在 for 循环中显示一个结果
- 从 foreach 更改一对中的值不会显示循环外的变化
- 无法显示循环中数组的正确百分比或总数
- C++, (GLUT) - 在显示循环中维护布尔值的全局向量 - 使程序崩溃
- 在wxWidgets的简单openGL显示循环中不完整的场景重绘
- 使用ttf显示循环中的文本
- 如何调用外部c函数,而GLUT显示循环锁定了我的c++主函数