2012-03-03 137 views
1

我有此excerise做在我要創建兩個陣列是這樣的:2D陣列循環顯示

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

和第三數組來存儲的1 [2] [3] + 2 [2結果] [3]。我需要使用雙循環和雙循環來迭代數組中的元素,計算每個元素的總和並將其存儲在第三個數組中。最後我必須輸出第三個數組sum。

的編程'必須是這樣的:

A = 
-5 2 8 
1 0 0 

B = 
1 0 2 
0 3 -6 

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

但是我不能讓它與兩個數組在雙工作只循環,僅此而已。這是我所做的。我只到目前爲止,當我嘗試在「j循環」中添加另一個數組時,所有事情都變得混亂起來。這是可以做到與沒有使用功能(IM只應該使用循環和邏輯條件本章中)僅由雙迴路和類似的東西:就像我說的,如果我不是它工作正常

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 =。

編輯: @尼克拉斯,感謝您的答案,但我真的不知道如何「準備」輸出。根據我的任務,我需要使用,並且我引用文本「一個雙重循環遍歷矩陣元素,計算每個分量的總和並將結果存儲在第三個矩陣中,最後輸出矩陣和。 「將此添加到OP以及。

+0

要解決你的編輯描述你已經給出的問題:我的答案的第一部分完全是這樣的。你只需要輸出**一個**矩陣,即矩陣。 – 2012-03-03 05:54:47

回答

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 S,一個用於每個矩陣。我們不是一次輸出所有內容,而是分別緩衝每個矩陣輸出,然後連續輸出每個矩陣。

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 2012-03-03 05:20:29

+0

沒有過去的功能,所以excerise應該解決沒有它。 – user1234259 2012-03-03 05:30:16

+0

猜猜我應該更清楚。這是我到目前爲止已經學會了(很基本的東西) *不同的變量 *類型轉換 *聲明和定義 *如果&其他 *切換 *的,同時,這樣做,休息,繼續和嵌套循環 * array anad multidimensional arrays - 這是我迄今爲止學到的。 – user1234259 2012-03-03 05:56:38

0

待辦事項亞歷克斯個Z的計算解決方案,並進行顯示,並且因爲這聽起來功課,做以下代碼:

準備提前輸出每個矩陣,完成後打印出來。

+0

感謝您的答案,但我真的不知道如何「準備」輸出。根據我的任務,我需要使用,並且我引用文本「一個雙重循環遍歷矩陣元素,計算每個分量的總和並將結果存儲在第三個矩陣中,最後輸出矩陣和。 「將此添加到OP以及。 – user1234259 2012-03-03 05:51:01

+0

那麼,我有點邪惡,以避免給你的解決方案。因爲這是一項家庭作業,我想給你一個線索。 – 2012-03-08 12:40:02