c++(4) 重载运算符“~”(友元运算符函数),求矩阵的逆矩阵。

如题:我把我写的部分挂上,请高手帮我看一下错在哪儿,运行到逆矩阵函数的时候就出现问题:Invalidallocationsize:...bytes#include<ios... 如题:我把我写的部分挂上,请高手帮我看一下错在哪儿,运行到逆矩阵函数的时候就出现问题:Invalid allocation size:...bytes
#include<iostream.h>
#include<math.h>
//定义类:
class matrix{
public:
int ximax,yimax;
float **pmatrix;
//构造函数:
matrix(unsigned int x=3,unsigned int y=3)
{ximax=x;yimax=y;}
//拷贝构造函数
matrix(const matrix &p)
{
ximax=p.ximax;
yimax=p.yimax;
int i,j;
pmatrix=new float*[p.ximax];
for(i=0;i<p.ximax;i++)
{pmatrix[i]=new float[p.yimax];}
for(i=0;i<p.ximax;i++)
{
for(j=0;j<p.yimax;j++)
pmatrix[i][j]=p.pmatrix[i][j];
}
}
friend istream &operator>>(istream &in,matrix &ob);//声明重载输入运算符
friend ostream &operator<<(ostream &out,matrix &ob);//声明重载输出运算符
friend matrix operator ~ (matrix a);//声明重载逆矩阵运算符
matrix operator * (matrix b);//声明重载乘法运算符
matrix &operator=(const matrix &m);//声明重载赋值运算符
//析构函数:
~matrix(){delete pmatrix;}
};
//定义重载逆矩阵运算符
matrix operator ~ (matrix a)
{
if(a.ximax!=a.yimax||det(a)==0)
cout<<"非可逆矩阵!"<<endl;
int n=a.ximax;
matrix b;
b.ximax=a.ximax-1;
b.yimax=a.yimax-1;
int i,j,k,l;
b.pmatrix=new float*[b.ximax];
for(i=0;i<b.ximax;i++)
{b.pmatrix[i]=new float[b.yimax];}
matrix c;
c.ximax=a.ximax;
c.yimax=a.yimax;
c.pmatrix=new float*[c.ximax];
for(i=0;i<c.ximax;i++)
{c.pmatrix[i]=new float[c.yimax];}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<n-1;k++)
{
for(l=0;l<n-1;l++)
{
if(k<i)
if(l<j)b.pmatrix[k][l]=a.pmatrix[k][l];
else b.pmatrix[k][l]=a.pmatrix[k][l+1];
else if(l<j)b.pmatrix[k][l]=a.pmatrix[k+1][l];
else b.pmatrix[k][l]=a.pmatrix[k+1][l+1];
}
}
c.pmatrix[j][i]=float(pow((-1),(i+j))*det(b)/det(a));
}
}
return c;
}
展开
 我来答
阿拉蕾dw
2008-12-01 · TA获得超过168个赞
知道答主
回答量:257
采纳率:0%
帮助的人:146万
展开全部
没问题,一切正常
osee222
2008-12-01 · TA获得超过373个赞
知道答主
回答量:74
采纳率:0%
帮助的人:0
展开全部
your dealing with p is wrong.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式