我正試圖使用矢量找到矩陣與其轉置的乘法。當運行的程式在列印了我輸入的矩陣后沒有執行,也沒有進行任何回圈和數學運算就中斷了。為什么我的程式在第二個for回圈后就結束了?
我哪里做錯了?
//矩陣乘以其轉置。
我得到的輸出結果是:
ENTER ROWS:3。
輸入 COLS:5。
2 4 5 5 6
4 6 7 9 0
1 2 3 5 8
原始的矩陣。
2 4 5 5 6
4 6 7 9 0
1 2 3 5 8
預期輸出:
ENTER ROWS: 3
輸入 COLS:5。
2 4 5 5 6
4 6 7 9 0
1 2 3 5 8
原始的矩陣。
2 4 5 5 6
4 6 7 9 0
1 2 3 5 8
轉置矩陣。
241
4 6 2
5 7 3
6 9 5
6 0 8
乘法矩陣。
10611298
112 182 82
98 82 103
uj5u.com熱心網友回復:
好吧,首先... 有一些方法可以找出你的程式崩潰的地方。最起碼,你可以添加更多的cout陳述句,它會告訴你。
但這有點明顯:
vector<vector<int> > vec(row, vector<int> (row,col))。
vector<vector<int>>tran(row, vector<int>(row,col) )。
for(int i=0;i<row;i ) // transpose
{
for(int j=0; j<col; j )
{
tran[i][j]=vec[j][i];
}
}
你對vec和tran的宣告完全相同,但你確實需要將tran的行數與列數對調。
考慮一下正在發生什么。i從0到2,這很好。j從0到4,然后你做 tran[3][0] = vec[0][3]。
但是 tran[3] 已經超過了陣列的末端,你得到了一個越界的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/314166.html
標籤:
