高分求解!!!关于C++矩阵!!!
可能是参数传输有错误!
请高手请教!!!
#include <stdio.h>
//#include <windows.h>
class Martix
{
int *O,x,y;
public:
Martix(int a,int b);
Martix(int &M,int a,int b);
Martix operator+(Martix Jz);
Martix operator-(Martix Jz);
Martix operator=(Martix Jz);
Martix operator*(Martix Jz);
void inv();
void Show();
};
Martix::Martix(int &M,int a,int b)
{
*O=*M;
x=a;
y=b;
}
Martix::Martix(int a,int b)
{
O=new int[a*b];
x=a;
y=b;
}
Martix Martix::operator+(Martix Jz)
{
Martix temp(x,y);
int i,j;
for (i=0;i<x ;i++ )
{
for (j=0;j<y ;j++ )
{
*(temp.O+i*y+j)=*(O+i*y+j)+*(Jz.O+i*Jz.y+j);
}
}
return temp;
}
Martix Martix::operator-(Martix Jz)
{
Martix temp(x,y);
int i,j;
for (i=0;i<x ;i++ )
{
for (j=0;j<y ;j++ )
{
*(temp.O+i*y+j)=*(O+i*y+j)-*(Jz.O+i*Jz.y+j);
}
}
return temp;
}
Martix Martix::operator=(Martix Jz)
{
int i,j;
for (i=0;i<x ;i++ )
{
for (j=0;j<y ;j++ )
{
*(O+i*y+j)=*(Jz.O+i*y+j);
}
}
return *this;
}
Martix Martix::operator*(Martix Jz)
{
Martix temp(x,Jz.y);
int i,j,k;
for (i=0;i<x ;i++ )
{
for (j=0;j<Jz.y ;j++ )
{
*(temp.O+i*y+j)=0;
for (k=0;k<y ;k++ )
{
*(temp.O+i*y+j)=*(O+i*y+k)**(Jz.O+k*y+j);
}
}
}
return temp;
}
void Martix::inv()
{
int temp;
int i,j;
for (i=0;i<x/2 ;i++ )
{
for (j=0;j<y/2 ;j++ )
{
temp=*(O+i*y+j);
*(O+i*y+j)=*(O+j*y+i);
*(O+j*y+i)=temp;
}
}
}
void Martix::Show()
{
int i,j;
for (i=0;i<x ;i++ )
{
for (j=0;j<y ;j++ )
{
printf("%d\t",*(&O+i*y+j));
}
printf("\n");
}
}
void main()
{
int A[6]={1,2,3,4,5,6};
int B[6]={4,7,5,8,6,9};
int C[6]={4,5,6,7,8,9};
Martix Ja(*A,2,3);
Martix Jb(*B,3,2);
Martix Jc(*C,2,3);
Martix J(2,3);
//J=Ja+Jc;
//J.Show();
Jc.inv();
Jc.Show();
printf("\n");
}