要求实现矩阵的加法,减法,乘法,利用重载运算符,指针完成, 急
#include "math.h"#include "iostream.h"
const int m=2; //设定的行数
const int n=3; //设定的列数
class matrix //矩阵类
{
private: int mem[m][n];
public:
matrix(); //无参构造函数
matrix(int a[m][n]); //含参构造函数
friend matrix operator+(matrix &a,matrix &b); //运算符加重载
friend matrix operator-(matrix &a,matrix &b); //运算符减重载
friend matrix operator*(matrix &a,matrix &b); //运算符乘重载
void display(); //显示函数
};
matrix::matrix() //无参时设定为零矩阵
{
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
mem[i][j]=0;
}
matrix::matrix(int a[m][n]) //有参时将矩阵赋值
{
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
mem[i][j]=a[i][j];
}
matrix operator +(matrix &a,matrix &b) //加号重载时将要相加的两个矩阵的元//素依次相加后赋给第三个类并把第三个类返回
{
matrix c;
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c.mem[i][j]=a.mem[i][j]+b.mem[i][j];
return c;
}
matrix operator -(matrix &a,matrix &b) //减号重载时将要相减的两个矩阵
//的元素依次相减后赋给第三个类并把第三个类返回
{
matrix c;
int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
c.mem[i][j]=a.mem[i][j]-b.mem[i][j];
return c;
}
matrix operator *(matrix &a,matrix &b) //乘号重载时将要相乘的两个矩阵的元素
//相乘后赋给第三个矩阵并把它返回
{
matrix c;
int i,j,k;
for(i=0;i<m;i++) //先确定某一行
for(k=0;k<n;k++) //确定乘积的列
for(j=0;j<n;j++) //确定原第一个矩阵的列和第二个行
c.mem[i][k]+=a.mem[i][j]*b.mem[j][k];//乘积的结果赋给第三个矩阵的某一个元素
return c;
}
void matrix::display()
{
int i,j;
for(i=1;i<m+1;i++)
{
cout<<" ";
for(j=1;j<n+1;j++)
{
cout<<mem[i-1][j-1]<<' ';
if(j==n) //如果等于列数则换行
cout<<endl;
}
}
}
void main()
{
int a[m][n],b[m][n];
int i=0,j=0;
cout<<"输入第一个矩阵X:"<<endl; //输入矩阵
cout<<"*********************************"<<endl;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>a[i][j];
cout<<"********************************"<<endl;
cout<<"输入第二个矩阵Y:"<<endl; //输入矩阵
for(i=0;i<m;i++)
for(j=0;j<n;j++)
cin>>b[i][j];
cout<<"*******************************"<<endl; //输出第一个矩阵
matrix x(a),y(b);
cout<<"x="<<endl;
x.display();
cout<<"*******************************"<<endl; //输出第二个矩阵
cout<<"y="<<endl;
y.display();
cout<<"********************************"<<endl; //输出矩阵的和
cout<<"x+y="<<endl;
(x+y).display();
cout<<"********************************"<<endl; //输出矩阵的差
cout<<"x-y="<<endl;
(x-y).display();
cout<<"********************************"<<endl; //输出矩阵的积
cout<<"x*y="<<endl;
(x*y).display();
cout<<"********************************"<<endl;
}
最后为什么乘法会实现不了啊
有没有高手能重新鞋一个出来啊
[ 本帖最后由 新生儿宝贝 于 2011-5-22 14:21 编辑 ]