c++ - 仅在主对角线和对角线c ++上具有不同于零的元素的矩阵
问题描述
我有一个这样的矩阵:
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;
}
由于某种原因它不起作用,它给出了非常愚蠢的数字
我是否存储了元素并且计算是否正确?
我在课堂上做到了这一点
解决方案
推荐阅读
- sql-server - 如何在借记 SQL Server 之前汇总任何贷项?
- c# - SqlCommand 是唯一的添加、删除和更新记录的方法吗?
- sql - 在 ORACLE 12c 上使用 ROWNUM 锁定更新跳过
- excel - 如何防止用户将文件保存到除一个特定位置之外的任何目录?
- unix - 在 awk 命令中调用 for 循环时出错
- javascript - 通过 Ajax - MVC 将切换开关值插入 DB
- android - 了解如何在 android/Iphone 之间为 offer/answer (webrtc) 生成正确的 sdp
- vue-router - 如何将 vue-router 链接添加为 ag-grid-vue 列?
- cluster-analysis - 如何计算两个树状图中两个个体之间或两种聚类方法之间的共同相似性?
- jenkins - Jenkins 上安装后脚本的 npm install PATH