/*
*程序的版权和版本声明部分:
*Copyright(c)2014,烟台大学计算机学院学生
*All rights reserved.
*文件名称:
*作者:田成琳
*完成日期:2014 年 5 月 13 日
*版本号:v1.0
*对任务及求解方法的描述部分:
*输入描述:两个2行3列的矩阵
*问题描述:有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加(如c=a+b)。
重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。
*程序输出:两矩阵和
*问题分析:
*算法设计:
*/
#include <iostream>
using namespace std;
#include<fstream>
class Matrix
{
public:
Matrix();
friend Matrix operator+(Matrix &,Matrix &);
friend ostream& operator<<(ostream&,Matrix&);
friend istream& operator>>(istream&,Matrix&);
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;
}
istream & operator >> (istream &in,Matrix &a)
{
for(int i=0;i<2;++i)
for(int j=0;j<3;++j)
in>>a.mat[i][j];
return in;
}
ostream& operator<<(ostream& out,Matrix &a)
{
for(int i=0;i<2;++i)
{
for(int j=0;j<3;++j)
{
if(j==2)//输出格式
out<<a.mat[i][j];
else
out<<a.mat[i][j]<<" ";
}
if(i<1)
cout<<endl;
}
return out;
}
int main()
{
freopen("r.txt","r",stdin);
Matrix a,b,c;
cin>>a;
cin>>b;
c=a+b;
cout<<c<<endl;
return 0;
}
运行结果:
心得体会:·