仅在主对角线和对角线 C++ 上元素不为零的矩阵

时间:2021-03-14 22:25:56

标签: c++ class matrix

我有一个这样的矩阵:

1 0 0 2
0 1 2 0
0 5 3 0
1 0 0 2

我将它们存储在一个

vector<int>v

来自

v[0][0] - v[n][n] + v[0][n] - v[n][0]

这是我尝试读取矩阵的方法

ostream& operator<<(ostream& s, const Xmatrix& a)
{
unsigned int matrixSize;
s >> matrixSize;
a.reSize(matrixSize);
    int x = 0;
    for(unsigned int i = 0; i < matrixSize; ++i) {
        s >> a(i,i);
    }
    for(unsigned int i = matrixSize - 1; i > matrixSize + 1; --i) {
        if(x == matrixSize / 2){
            x = x + 2;
            s >> a(x,i);
        }
        else{
            s >> a(x,i);
            x++;
        }
    }

return s;
}

这是我尝试做乘法的方法

Xmatrix operator*(const Xmatrix& a ,const Xmatrix& b)
{
if(a._v.size() != b._v.size()){
    throw Xmatrix::DIFFERENT;
}

Xmatrix c(a._v.size());
int x = a._v.size();
int m = x/2;

for(unsigned int i = 0; i < c._v.size(); ++i){
    //c._v[i] = a._v[i] * b._v[i];
    c._v[i] = a._v[i] * b._v[i] + a._v[i] * b._v[x+i] + a._v[m] * b._v[x+i] + a._v[m] * b._v[i];
    x--;
    m++;
}
return c;
}

由于某种原因它不起作用,它给出了非常愚蠢的数字

我是否存储了元素并且计算是否正确?

我用类做到了这一点

0 个答案:

没有答案