【OJ】---U---矩阵求和--重载运算符



题目要求如下:

-----------------------------------------------------------------------------------------------------------------------------------------------

代码如下:

/*
 * Copyright (c) 2013, 烟台大学计算机学院
 * All rights reserved.
 * 作    者:  沈远宏
 * 完成日期:2014 年06月27日
 * 版 本 号:v1.0
 * 问题描述:Description
有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加(如c=a+b)。
重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。

Input
两个2行3列矩阵

Output
矩阵之和
*/
//前置代码及类型定义已给定如下,提交时不需要包含,会自动添加到程序前部
#include <iostream>
using namespace std;
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& m1,Matrix& m2)
{
    Matrix m3;
    for(int i=0; i<2; ++i)
    {
        for(int j=0; j<3; ++j)
        {
            m3.mat[i][j]=m1.mat[i][j]+m2.mat[i][j];
        }
    }
    return m3;
}
/*ostream& operator<<(ostream& cout,Matrix& m)
{
    for(int i=0; i<2; ++i)
    {
        for(int j=0; j<3; ++j)
        {
            cout<<m.mat[i][j]<<" ";
        }
        cout<<endl;
    }
    return cout;
}*/
istream& operator>>(istream& cin,Matrix& m)
{
    for(int i=0; i<2; ++i)
    {
        for(int j=0; j<3; ++j)
        {
            cin>>m.mat[i][j];
        }
    }
    return cin;
}
ostream& operator<<(ostream& cout,Matrix& m)
{
    for(int i=0; i<2; ++i)
    {
        for(int j=0; j<2; ++j)
        {
            cout<<m.mat[i][j]<<" ";
        }
        cout<<m.mat[i][2]<<endl;
    }
    return cout;
}
//主函数已给定如下,提交时不需要包含,会自动添加到程序尾部
int main()
{
    Matrix a,b,c;
    cin>>a;
    cin>>b;
    c=a+b;
    cout<<c<<endl;
    return 0;
}


运行结果:


OJ要求结果输出例样:

发布了173 篇原创文章 · 获赞 8 · 访问量 11万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章