所以我有一个形式为X的矩阵,我试着读两个对角线,我读第一个,但我读第二个对角线很吃力。
为了前任。如果我给出数字2,3,4,它会输出矩阵:
2 0 0
0 3 0
0 0 4
但在这种情况下,我需要读其他对角线,但只读边中的数字,因为我已经读过数字3了。
这种情况只是当矩阵的大小是奇数时,但我也需要帮助,当它是奇数时,即使认为它会更容易,因为你只需要阅读两个对角线而不关心中间元素。
这是我到现在为止只阅读第一个对角线...
istream& operator>> (istream& s, matrixX& m) {
int size;
s >> size;
m.reSize (size);
for ( int j = 0; j < size; j++){
s >> m(j,j);
}
您可以使用以下命令读取另一个对角线:
istream& operator>> (istream& s, matrixX& m) {
int size;
s >> size;
m.reSize (size);
for ( int j = 0; j < size; j++) {
s >> m(j,j);
if (size % 2 == 0 || j != size / 2) {
s >> m(j, size - j - 1);
}
}
return s;
}
例如。输入:
3 1 2 3 4 5
大小写M(行,列)
中的输出:
1 0 4
0 2 0
5 0 3
输出大小写M(col,row)
:
1 0 5
0 2 0
4 0 3
输入:
4 1 2 3 4 5 6 7 8
大小写M(行,列)
中的输出:
1 0 4 5
0 2 6 0
0 7 3 0
8 0 0 4
输出大小写M(col,row)
:
1 0 4 8
0 2 7 0
0 6 3 0
5 0 0 4