救命!矩阵乘法!无法实现!!不解!!
小V小V志 2009-12-18 10:20:43 #include <iostream.h>
class Matrix
{
private:
int H,L;
public:
int **jz1,**jz2,**zz;
Matrix(int h=1,int l=1)
{
H=h;
L=l;
}
void getsize()//输入行列
{
cout < <"Please input Matrix ROW and Arrange:";
cin>>H>>L;
jz1=new int *[H];
for(int i=0;i <H;i++)
jz1[i]=new int [L];
jz2=new int *[H];
for( i=0;i <H;i++)
jz2[i]=new int [L];
zz=new int *[H];
for(i=0;i <H;i++)
zz[i]=new int [L];
}
void getele1()//输出第一个矩阵的元素
{
cout < <"Please input the first Matrix's element:";
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
cin>>jz1[i][j];
}
}
void getele2()//输入第二个矩阵的元素
{
cout < <"Please input the second Matrix's element:";
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
cin>>jz2[i][j];
}
}
void show1()//输出第一个矩阵
{
cout < <"Matrix A is:" < <endl;
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
cout < <jz1[i][j] < <"\t";
cout < <endl;
}
}
void show2()//输出第二个矩阵的元素
{
cout < <"Matrix B is:" < <endl;
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
cout < <jz2[i][j] < <"\t";
cout < <endl;
}
}
void zhuanz()//矩阵的转置
{
cout < <"Matrix A zhuangzhi is:" < <endl;
int x;
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
{ x=jz1[j][i];
zz[i][j]=x;
cout < <zz[i][j] < <"\t";
}
cout < <endl;
}
}
void sum();//矩阵的加法
void dif();//矩阵的减法
void mul(); //矩阵的乘法
friend Matrix show2(Matrix &b);
~Matrix()//析构函数
{
for(int i=0;i <H;i++)
delete [] jz1[i];
delete [] jz2[i];
delete [] zz[i];
delete [] jz1;
delete [] jz2;
delete [] zz;
}
};
void Matrix::sum()
{
cout < <"Matrix A+B is :" < <endl;
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
cout < <jz1[i][j]+jz2[i][j] < <"\t";
cout < <endl;
}
}
void Matrix::dif()
{
cout < <"Matrix A - B is :" < <endl;
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
cout < <jz1[i][j]-jz2[i][j] < <"\t";
cout < <endl;
}
}
void Matrix::mul()//矩阵的乘法
{
cout < <"Matrix A*B is :" < <endl;
for(int i=0;i <H;i++)
{
for(int j=0;j <L;j++)
{
for(int a=0;a <L;a++)
zz[i][j]+=jz1[i][a]*jz2[a][j];
cout < <zz[i][j];
}
}
}
void main()
{
Matrix x;
x.getsize();
x.getele1();
x.getele2();
x.show1();
x.show2();
x.sum();
x.zhuanz();
x.dif();
x.mul();
}