【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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章