1. 程式人生 > >C++習題 矩陣求和--過載運算子

C++習題 矩陣求和--過載運算子

/*
Description
有兩個矩陣a和b,均為2行3列。求兩個矩陣之和。過載運算子“+”,使之能用於矩陣相加(如c=a+b)。
過載流插入運算子“<<”和流提取運算子“>>”,使之能用於該矩陣的輸入和輸出。
Input
兩個2行3列矩陣
Output
矩陣之和
Sample Input
1 2 3 4 5 6 7 8 9 1 2 3
Sample Output
8 10 12 5 7 9
*/
#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 &p1,Matrix &p2)
{
    Matrix p;
    for(int i=0; i<2; i++)
    {
        for(int j=0; j<3; j++)
        {
            p.mat[i][j]=p1.mat[i][j]+p2.mat[i][j];
        }
    }
    return p;
}
ostream& operator<<(ostream& out,Matrix& p)
{
    for(int i=0; i<2; i++)
    {
        for(int j=0; j<3; j++)
        {
            out<<p.mat[i][j]<<" ";
            if(i==0&&j==2)
                out<<endl;
        }
    }
    return out;
}
istream& operator>>(istream&in,Matrix&p)
{
    for(int i=0; i<2; i++)
    {
        for(int j=0; j<3; j++)
        {
            in>>p.mat[i][j];
        }
    }
    return in;
}
int main()
{
    Matrix a,b,c;
    cin>>a;
    cin>>b;
    c=a+b;
    cout<<c<<endl;
    return 0;
}