二维数组类Douary

来源:互联网 发布:多盈软件骗局 编辑:程序博客网 时间:2024/06/07 22:19
//建立一个二维数组类Douary,
//使该类中有以下数据成员、成员函数及友员函数,完成矩阵的输入、输出、加、减、相等操作。
#include <iostream>using namespace std;class douary{private:    int *arr;    int row;    int col;public:    douary(int m,int n);    friend istream &operator>>(istream &input,douary &);    friend ostream &operator<<(ostream &output,douary &);//重载运算符“<<”以m行n列形式输出    friend douary operator+(const douary &d1,const douary &d2);//两个矩阵相加,规则:对应位置上的元素相加    friend douary operator-(const douary &d1,const douary &d2);//两个矩阵相减,规则:对应位置上的元素相减};douary::douary(int m,int n){    row=m;    col=n;    arr=new int[m*n];    for(int i=0; i<row; i++)        for(int j=0; j<col; j++)            arr[i*row+j]=0;}istream &operator>>(istream &input,douary &d){    for(int i=0; i<d.row; i++)        for(int j=0; j<d.col; j++)        {            cin>>d.arr[i*d.row+j];        }    return input;}ostream & operator<<(ostream &output,douary &d){    for(int i=0; i<d.row; i++)    {        for(int j=0; j<d.col; j++)        {            cout<<d.arr[i*d.row+j]<<"  ";        }        cout<<endl;    }    cout<<endl;    return output;}douary operator+(const douary &d1,const douary &d2){    douary d(d1.row,d1.col);    for(int i=0; i<d1.row; i++)        for(int j=0; j<d1.col; j++)        {            d.arr[i*d1.col+j]=d1.arr[i*d1.col+j]+d2.arr[i*d1.col+j];        }    return d;}douary operator-(const douary &d1,const douary &d2){    douary d(d1.row,d1.col);    for(int i=0; i<d1.row; i++)        for(int j=0; j<d1.col; j++)        {            d.arr[i*d1.col+j]=d1.arr[i*d1.col+j]-d2.arr[i*d1.col+j];        }    return d;}int main(){    douary d1(2,3),d2(2,3),d3(0,0),d4(0,0);    cout<<"输入d1:"<<endl;    cin>>d1;    cout<<"输入d2:"<<endl;    cin>>d2;    cout<<"d1="<<endl;    cout<<d1;    cout<<"d2="<<endl;    cout<<d2;    cout<<"d1+d2="<<endl;    d3=(d1+d2);    cout<<d3;    cout<<"d1-d2="<<endl;    d4=d1-d2;    cout<<d4;    return 0;}