2d阵列循环显示

时间:2012-03-03 04:53:46

标签: c++ arrays loops for-loop

我喜欢这样做,我需要创建两个这样的数组:

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

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

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

2 个答案:

答案 0 :(得分:1)

根据我的收集,您的主要目标是将两个矩阵(由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数组大小。但我正在努力让事情变得简单。


EDIT2:没有功能的解决方案:

创建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();

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

答案 1 :(得分:0)

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

预先为每个矩阵准备输出,并在完成后打印。