/* 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();
}