c++求两个矩阵的乘法,但运行出来的结果是一些不可预料的值

愤怒的小鸡wo 2014-03-26 01:00:35
#include<iostream>
#include<cstdlib>
using namespace std;
class CreateMatrix
{
private:
int m,n,**p;
public:
void SetMatrix(int m,int n)
{
p=new int *[m]; //build m pointers and save m rows
for(int i=0;i<m;i++)
if((p[i]=new int [n])==NULL)
exit(0);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cin>>p[i][j];
}
cout<<"the Matrix of you input:"<<endl;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
cout<<p[i][j]<<"\t";
cout<<endl;
}
}
void DelMatrix(int m)
{
for(int i=0;i<m;i++)
delete[]p[i];
delete[]p;
}
friend void MatrixMul(CreateMatrix &E,CreateMatrix &F,int m,int n,int t);
};

void MatrixMul(CreateMatrix &E,CreateMatrix &F,int m,int n,int t)
{
int **q;
q=new int *[m]; //build m pointers and save m rows
for(int i=0;i<m;i++)
if((q[i]=new int [n])==NULL)
exit(0);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
for(int k=0;k<t;k++)
q[i][k]=q[i][k]+E.p[i][j]*F.p[j][k];
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
cout<<q[i][j]<<" ";
}

int main()
{
CreateMatrix A,B;
int a,b,c,d;
cout<<"you must ensure b=c,that is A_matrix's column equals B_matrix's row"<<endl;
cout<<"input A_matrix's row a and column b:"<<endl;
cin>>a>>b;
cout<<"input A_matrix elements:"<<endl;
A.SetMatrix(a,b);
cout<<"input B_matrix's row c and column d:"<<endl;
cin>>c>>d;
cout<<"input B_matrix elements:"<<endl;
B.SetMatrix(c,d);
MatrixMul(A,B,a,d,b);
system("pause");
return 0;
}
...全文
120 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hucg 2014-03-26
  • 打赏
  • 举报
回复
结果不可预料是因为你没有对存储计算结果的二维数组q进行初始化
for(int i=0;i<m;i++)
	{
		if((q[i]=new int [n])==NULL)
			exit(0);
		else//内存申请成功就要初始化为0
		{
			for(int j=0;j<n;j++)
				q[i][j]=0;
		}
	}
qiminixi 2014-03-26
  • 打赏
  • 举报
回复
还是自己慢慢调试吧,分别用1*1、2*1、1*2、2*2、等的矩阵去测试,然后用复杂的N*M矩阵测试。 IDE都会提供调试的功能的,可以单步执行代码。不会的网上查一下,很简单的。 调试的时候还可以查看变量的值。

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧