提问者:小点点

我怎样才能读一个形式X的矩阵?


所以我有一个形式为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);

}

共1个答案

匿名用户

您可以使用以下命令读取另一个对角线:

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