DL1997 2016-12-05 16:09 采纳率: 33.3%
浏览 1165
已采纳

为什么矩阵赋值那每一行的最后一个元素都会和下一行的第一个元素相等而且提前加了2?

#include
#include
using namespace std;
typedef struct MyStruct
{
int *pMat; int row,col;
}MAT,*pMAT;
void 生成矩阵A(MAT &a){
int temp=30;
a.pMat=new int[a.col*a.row];
for(int i=0;i<a.row;i++){
for(int j=0;j<a.col;j++)
{
a.pMat[a.row*i+j]=temp;
temp+=3;
}
temp=temp+2;
}
}
void 生成矩阵B(MAT &a){
int temp=30;
a.pMat=new int[a.col*a.row];
for(int i=0;i<a.row;i++){
for(int j=0;j<a.col;j++)
{
a.pMat[a.row*i+j]=temp;

    }

}

}
void 显示矩阵(char* str,MAT &a){
cout<<*str<<endl;
for(int i=0;i<a.row;i++){
for(int j=0;j<a.col;j++)
{
cout<<a.pMat[a.row*i+j]<<" ";

    }
    cout<<endl;
}

}
void 矩阵相减(MAT &a,MAT&b,pMAT c){
int *arr2=new int[a.col*a.row];
c->pMat=arr2;
for(int i=0;i for(int j=0;j {
c->pMat[i*a.row+j]=a.pMat[i*a.row+j]-b.pMat[i*a.row+j];
}

}

}
void main()
{
int m=3,n=4;
MAT A={0,m,n};
MAT B={0,m,n};
pMAT C=new MAT;
生成矩阵A(A);生成矩阵B(B);
矩阵相减(A,B,C);
显示矩阵("A:",A);
显示矩阵("B:",B);
显示矩阵("C=A-B:",*C);
delete A.pMat;delete B.pMat;
delete C;
system("pause");
}
图片说明

  • 写回答

3条回答 默认 最新

  • 看得到你的人头 2016-12-06 01:36
    关注

    我们可以分析一下,比如在void 生成矩阵A(MAT &a)函数中,赋值语句 a.pMat[a.row*i+j]=temp;
    当i=0时,j = 0,1,2,3,则在pMat中赋值的有pMat[0],pMat[1],pMat[2]和pMat[3];
    当i=1时,j=0,1,2,3,则在pMat中赋值的有pMat[3],pMat[4],pMat[5]和pMat[6];
    这样i=0次的pMat[3]的值被i=1次的pMat[3]覆盖了,也就是你问的问题。
    同样在其他几个函数中也有此问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题