• [YTU]_2640(编程题:运算符重载---矩阵求和)


    题目描述
    /*
    有两个矩阵a和b,均为2行3列。求两个矩阵之和。
    重载运算符“+”,使之能用于矩阵相加(如c=a+b)。
    重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。
    
    请在下面的程序段基础上完成设计,只提交begin到end部分的代码 */
    
    
    #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()
    {
        int i,j;
    	
    for(i=0;i<2;i++)
    		
    for(j=0;j<3;j++)
    			
    mat[i][j]=0; 
    }
    
    
    istream & operator>>(istream &  input,Matrix & m)
    {
        int i,j;
    	
    for(i=0;i<2;i++)
    		
    for(j=0;j<3;j++)
    			
    input>>m.mat[i][j];
    	
    return input;
    		
    }
    
    
    //将程序需要的其他成份写在下面,只提交begin到end部分的代码
    //******************** begin ********************
    
    
    
    
    //********************* end ********************
    
    int main()
    
    {
    
        Matrix a,b,c;
    
        cin>>a;
    
        cin>>b;
    
        c=a+b;
    
        cout<<c<<endl;
    
        return 0;
    
    }
    
    
    输入
    两个2行3列矩阵
    
    输出
    矩阵之和
    
    样例输入
    1 2 3
    4 5 6
    
    7 8 9
    0 1 2
    样例输出
    8 10 12 
    4 6 8 
    #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()
    {
        int i,j;
        for(i=0;i<2;i++)
            for(j=0;j<3;j++)
                mat[i][j]=0; 
    }
     
     
    istream & operator>>(istream &  input,Matrix & m)
    {
        int i,j;
        for(i=0;i<2;i++)
            for(j=0;j<3;j++)
                input>>m.mat[i][j];
        return input;       
    }
    Matrix operator+(Matrix &a,Matrix &b)
    {
        Matrix S;
        int i,j;
        for(i=0;i<2;i++)
            for(j=0;j<3;j++)
             S.mat[i][j]=a.mat[i][j]+b.mat[i][j];
            return S;
    }
    ostream & operator<<(ostream &output,Matrix &m)
    {
        int i,j;
        for(i=0;i<2;i++)
            for(j=0;j<3;j++)
            {
                output<<m.mat[i][j]<<' ';
                if(j==2)
                    output<<endl;
            }
            return output;
    }
    int main()
     
    {
     
        Matrix a,b,c;
     
        cin>>a;
     
        cin>>b;
     
        c=a+b;
     
        cout<<c<<endl;
     
        return 0;
     
    }


    
    
    
    
                
  • 相关阅读:
    环形二维数组
    梦断代码(三)
    梦断代码(二)
    梦断代码(一)
    CNblogs用户体验
    《软件工程》--读书笔记三
    《软件工程》--读书笔记二
    《软件工程》--读书笔记一
    找出水王
    典型用户
  • 原文地址:https://www.cnblogs.com/sxy201658506207/p/7586412.html
Copyright © 2020-2023  润新知