/* 6.Write a C++ program to create a class called as MATRIX using two-dimensional array of integers. Implement the following by overloading the operator == which checks the compatibility of two matrices to be added and subtracted. Perform the following by overloading + and - operators. Display the result by overloading the operator <<.
if (m1 == m2)
{
    m3 = m1 + m2;
    m4 = m1 - m2;
}
else
    display error.
Where m1,m2,m3,m4 are MATRIX objects. */


#include<iostream.h>
#include<conio.h>
const int max=5;
class MATRIX
{
    int a[max][max],m,n;

    public:
        MATRIX(int r,int c)
        {
            m = r;
            n = c;
        }
        void ReadMat();
        MATRIX operator +(MATRIX b);
        MATRIX operator -(MATRIX b);
        int operator ==(MATRIX b);
        friend ostream& operator <<(ostream& Out,MATRIX m);
};
int MATRIX::operator ==(MATRIX b)
{
    if ((m == b.m) && (n == b.n))
        return 1;
    else
        return 0;
}
void MATRIX::ReadMat()
{
    cout<<"\nEnter elements of a matrix :\n";
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++)
            cin>>a[i][j];
}
MATRIX MATRIX::operator +(MATRIX b)
{
    MATRIX c(m,n);
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++)
            c.a[i][j] = a[i][j] + b.a[i][j];
    return c;
}
MATRIX MATRIX::operator -(MATRIX b)
{
    MATRIX c(m,n);
    for (int i=0; i<m; i++)
        for (int j=0; j<n; j++)
            c.a[i][j] = a[i][j] - b.a[i][j];
    return c;
}
ostream& operator <<(ostream& Out,MATRIX mat)
{
    for (int i=0; i<mat.m; i++)
    {
        for (int j=0; j<mat.n; j++)
            Out<<mat.a[i][j]<<'\t';
        Out<<endl;
    }
    return Out;
}
void main()
{
    int m,n,r,c;
    clrscr();
    cout<<"\nEnter the order of MATRIX M1 : ";
    cin>>m>>n;
    cout<<"\nEnter the order of MATRIX M2 : ";
    cin>>r>>c;
    MATRIX m1(m,n);
    m1.ReadMat();
    MATRIX m2(r,c);
    m2.ReadMat();
    if (m1 == m2)
    {
        cout<<"\nGiven MATRIX M1 is as follows :\n"<<m1;
        cout<<"\n\nGiven MATRIX M2 is as follows :\n"<<m2;
        MATRIX m3(m,n);
        m3 = m1 + m2;
        MATRIX m4(m,n);
        m4 = m1 - m2;
        cout<<"\nResult : M3 = M1 + M2 is as follows:\n"<<m3;
        cout<<"\nResult : M4 = M1 - M2 is as follows:\n"<<m4;
    }
    else
        cout<<"\nInvalid matrix addition. Rows and Columns are not equal";
    getch();
}