2012-03-03 19 views
1

] [3]。ダブルループとダブルループを使用して、配列内の要素を反復処理し、各compenentの合計を計算し、3番目の配列に格納する必要があります。最後に、3番目の配列の合計を出力する必要があります。私はそれが唯一のループのために、二重に2つの配列、より多くの何も動作させることはできませんしかし2D配列ループディスプレイ

A = 
-5 2 8 
1 0 0 

B = 
1 0 2 
0 3 -6 

A + B = 
-4 2 10 
1 3 -6 

progamは、このように見える必要があります。ここに私がしたことがあります。私はこれまでにしか来ていないし、 "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つの配列データのみを表示するか、より多くのループを使用しますが、私は2つのfor-loopを使用する必要があります。その上に私は1 0 0とB =の間に別のスペースを得る方法と、このループにA =、B =およびA + B =を追加する方法を知らない。

編集@ @ニクラス、答えに感謝しますが、私は実際に出力を '準備する'方法を理解していません。私の割り当てによれば、私は使用する必要があり、テキストを引用しています。「行列の要素を繰り返し処理し、各要素の合計を計算し、その結果を3番目の行列に格納します。 " OPにもこれを追加します。

+0

あなたの問題を記述した編集内容に対処するために、私の答えの最初の部分はこれを正確に行います。 **行列を出力する必要があります。 –

答えて

1

あなたが主な目的は、2つのマトリックス(2D配列で表される)を一緒に追加し、その結果をmatrixCに保存して出力することです。あなたは正しい軌道に乗っているようですが、これを達成するためにはわずかな変更しか必要ありません。

コードに以下の変更は、トリック(のみ2ループのが使用されている)を行うべきである:

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に結果を格納すべきです。それも出力されます。


編集:新しい情報(この回答の下にあなたのコメント)に照らして、2つ以上のこれらのマトリックスを出力する必要があるようですが、それでも2つの forループがあります。解決策は単純です:

outputMatrix(matrixA); 
outputMatrix(matrixB); 
outputMatrix(matrixC); 
:今、あなたはちょうどこの操作を行うと、出力 matrixA matrixBその後、 matrixCする必要がある場合は

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

:あなたは出力1に必要な時はいつでも、それを行列を出力する関数を作成し、使用します

このコードは固定された2x3配列サイズに依存しているので、実際には一般的ではありません。しかし、私は物事をあなたのために簡単にしています。


EDIT2:機能無し溶液:

3つのstd::stringstream S、各マトリクスに1つずつ作成します。一度にすべてを出力するのではなく、各マトリックス出力を別々にバッファし、それぞれを連続して出力します。

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

私はあなたが学んだかいませんでしたかわからない、アプローチする多くの方法がある。この問題とあなたのインストラクターは、おそらくここに助言のためのより良い賭けである - あなたは、特定の技術を使用することになっている場合は特に。

+0

申し訳ありませんが、最初にA、Bを表示してから追加してCを表示する必要があります。すべてのテキストは、最初のコードボックスで示したようにフォーマットする必要があります。 – user1234259

+0

機能を使い果たしていないので、エクササイズはそれなしで解決する必要があります。 – user1234259

+0

私はより明確にすべきだったと思います。これは*、休憩、継続して営巣んが、ループ、スイッチ * * 私はこれまでのところ(非常に基本的なものを)学んだことを *宣言型変換 *異なる変数であると場合とそうでない * を画成 *配列と多次元配列 - これまでに学んだことはすべてこれです。 – user1234259

0

計算のためのアレックス・Zのソリューションとして行うと表示するように、これは宿題として聞こえるように、コード内で次の操作を行います

は、各行列を事前に出力を準備したときに完全にそれを印刷。

+0

答えに感謝しますが、私は実際に出力を「準備する」方法を理解していません。私の割り当てによれば、私は使用する必要があり、テキストを引用しています。「行列の要素を繰り返し処理し、各要素の合計を計算し、その結果を3番目の行列に格納します。 " OPにもこれを追加します。 – user1234259

+0

まあ、私はあなたに解決策を与えることを避けるために邪悪であった。宿題なので、私はあなたに手がかりを与えたいと思っていました。 –