有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如:c=a+b.

如何写出一个程序?... 如何写出一个程序? 展开
 我来答
匿名用户
推荐于2017-11-25
展开全部
#include <iostream>
using namespace std;
class Matrix //定义Matrix类
{public:
Matrix(); //默认构造函数
friend Matrix operator+(Matrix &,Matrix &); //重载运算符“+”
void input(); //输入数据函数
void display(); //输出数据函数
private:
int mat[2][3];
};

Matrix::Matrix() //定义构造函数
{for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
mat[i][j]=0;
}

Matrix operator+(Matrix &a,Matrix &b) //定义重载运算符“+”函数
{Matrix c;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
{c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}
return c;
}
void Matrix::input() //定义输入数据函数
{cout<<"input value of matrix:"<<endl;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
cin>>mat[i][j];
}

void Matrix::display() //定义输出数据函数
{for (int i=0;i<2;i++)
{for(int j=0;j<3;j++)
{cout<<mat[i][j]<<" ";}
cout<<endl;}
}

int main()
{Matrix a,b,c;
a.input();
b.input();
cout<<endl<<"Matrix a:"<<endl;
a.display();
cout<<endl<<"Matrix b:"<<endl;
b.display();
c=a+b; //用重载运算符“+”实现两个矩阵相加
cout<<endl<<"Matrix c = Matrix a + Matrix b :"<<endl;
c.display();
return 0;
}
我已经匿名了
2013-05-14 · TA获得超过816个赞
知道小有建树答主
回答量:478
采纳率:0%
帮助的人:240万
展开全部
#include<iostream>
#include<string>
using namespace std;
class jz;
istream &operator>>(istream &is,jz &c);
ostream &operator<<(ostream &os,jz &c);
class jz
{
public:
jz(){};
friend jz operator+(const jz &a, const jz &b); //friend
friend ostream &operator<<(ostream &,jz &);
friend istream &operator>>(istream &,jz &);
jz(int a,int b,int c,int d,int e,int f) {d1=a;d2=b;d3=c;d4=d;d5=e;d6=f;}
private:
int d1,d2,d3,d4,d5,d6;
};
ostream & operator<<(ostream &output,jz &c)
{
output<<c.d1<<" "
<<c.d2<<" "
<<c.d3<<endl;
cout<<c.d4<<" "
<<c.d5<<" "
<<c.d6<<endl;
return output;
}
istream & operator>>(istream &input,jz &c)
{
input>>c.d1>>c.d2>>c.d3>>c.d4>>c.d5>>c.d6;
return input;
}
jz operator+(const jz &a, const jz &b)
{
int a1=a.d1+b.d1;
int a2=a.d2+b.d2;
int a3=a.d3+b.d3;
int a4=a.d4+b.d4;
int a5=a.d5+b.d5;
int a6=a.d6+b.d6;
return jz(a1,a2,a3,a4,a5,a6);
}
int main()
{
jz a,b,c;
cin>>a;
cin>>b;
c=a+b;
cout<<c<<endl;
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Hernak2011
2011-11-21 · 超过40用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:110万
展开全部
#include<iostream>
using namespace std;
class Matrix{
private:
double data[2][3];
public:
Matrix();
Matrix(const Matrix& );//此处的拷贝复制函数实际上也可以不重载,同样能正常工作。

Matrix operator+(const Matrix&);
void SetValue(int ,int ,double );
double GetValue(int, int );
};
Matrix::Matrix()
{
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
data[i][j]=0;
}
Matrix Matrix::operator +(const Matrix& b)
{
Matrix ret;
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
ret.data[i][j]=data[i][j]+b.data[i][j];
return ret;
}
Matrix::Matrix(const Matrix& b)
{
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
data[i][j]=b.data[i][j];
}
void Matrix::SetValue(int row,int column,double value)
{
if(row>=0 && row<2 && column>=0 && column<3)
data[row][column]=value;
}
double Matrix::GetValue(int r,int c)
{
if(r>=0 && r<2 && c>=0 && c<3)
return data[r][c];
return 0;
}
int main()
{
Matrix a,b,c;
int i,j;

for(i=0;i<2;i++)
for(j=0;j<3;j++)
{
a.SetValue(i,j,i);
b.SetValue(i,j,j);
}

c=a+b;
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
cout<<" "<<c.GetValue(i,j);
cout<<endl;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式