#include<iostream>
using namespace std;
//write your code here
class Matrix{
private:
int arr[3][3];
public:
friend istream& operator >> (istream& in,Matrix &matrix);
friend ostream& operator << (ostream& out,const Matrix& matrix);
friend Matrix operator + (Matrix &a,Matrix &b);
void setArr(int i,int j,int data){
arr[i][j] = data;
}
int getArr(int i,int j) const{
// ^^^^^ // Added const
return arr[i][j];
}
Matrix& operator = (const Matrix &b);
// ^^^^^ // Added const
};
istream& operator >> (istream& in,Matrix &matrix)
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
in >> matrix.arr[i][j];
return in;
}
ostream& operator << (ostream& out,const Matrix &matrix){
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
out << matrix.arr[i][j] << " ";
out << endl;
}
return out;
}
Matrix operator + (Matrix &a,Matrix &b){
Matrix temp;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
temp.setArr(i,j,(a.getArr(i,j)+b.getArr(i,j)));
return temp;
}
Matrix& Matrix::operator = (const Matrix &b){
// ^^^^^ // Added const
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
arr[i][j] = b.getArr(i,j);
return *this;
}
int main()
{
Matrix a1,a2,a3,a4;
cin >> a1;
cin >> a2;
a4 = a2;
a3 = (a1+a4); // No errors now
cout << a1 << endl;
cout << a2 << endl;
cout << a3 << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovL3dyaXRlIHlvdXIgY29kZSBoZXJlCmNsYXNzIE1hdHJpeHsKICBwcml2YXRlOgogICAgaW50IGFyclszXVszXTsKICBwdWJsaWM6CiAgICBmcmllbmQgaXN0cmVhbSYgb3BlcmF0b3IgPj4gKGlzdHJlYW0mIGluLE1hdHJpeCAmbWF0cml4KTsKICAgIGZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvciA8PCAob3N0cmVhbSYgb3V0LGNvbnN0IE1hdHJpeCYgbWF0cml4KTsKICAgIGZyaWVuZCBNYXRyaXggb3BlcmF0b3IgKyAoTWF0cml4ICZhLE1hdHJpeCAmYik7CiAgICB2b2lkIHNldEFycihpbnQgaSxpbnQgaixpbnQgZGF0YSl7CiAgICAgICAgYXJyW2ldW2pdID0gZGF0YTsKICAgIH0KICAgIGludCBnZXRBcnIoaW50IGksaW50IGopIGNvbnN0ewogICAgLy8gICAgICAgICAgICAgICAgICAgICAgXl5eXl4gLy8gQWRkZWQgY29uc3QKICAgICAgICByZXR1cm4gYXJyW2ldW2pdOwogICAgfQogICAgTWF0cml4JiBvcGVyYXRvciA9IChjb25zdCBNYXRyaXggJmIpOwogICAgLy8gICAgICAgICAgICAgICAgICBeXl5eXiAvLyBBZGRlZCBjb25zdAp9Owppc3RyZWFtJiBvcGVyYXRvciA+PiAoaXN0cmVhbSYgaW4sTWF0cml4ICZtYXRyaXgpCnsKICAgIGZvcihpbnQgaT0wO2k8MztpKyspCiAgICAgICAgZm9yKGludCBqPTA7ajwzO2orKykKICAgICAgICAgICAgaW4gPj4gbWF0cml4LmFycltpXVtqXTsKICAgIHJldHVybiBpbjsKfQpvc3RyZWFtJiBvcGVyYXRvciA8PCAob3N0cmVhbSYgb3V0LGNvbnN0IE1hdHJpeCAmbWF0cml4KXsKICAgIGZvcihpbnQgaT0wO2k8MztpKyspCiAgICB7CiAgICAgICAgZm9yKGludCBqPTA7ajwzO2orKykKICAgICAgICAgICAgb3V0IDw8IG1hdHJpeC5hcnJbaV1bal0gPDwgIiAiOwogICAgICAgIG91dCA8PCBlbmRsOwogICAgfSAgICAgICAKICAgIHJldHVybiBvdXQ7Cn0KTWF0cml4IG9wZXJhdG9yICsgKE1hdHJpeCAmYSxNYXRyaXggJmIpewogICAgTWF0cml4IHRlbXA7CiAgICBmb3IoaW50IGk9MDtpPDM7aSsrKQogICAgICAgIGZvcihpbnQgaj0wO2o8MztqKyspCiAgICAgICAgICAgIHRlbXAuc2V0QXJyKGksaiwoYS5nZXRBcnIoaSxqKStiLmdldEFycihpLGopKSk7CiAgICByZXR1cm4gdGVtcDsKCn0KTWF0cml4JiBNYXRyaXg6Om9wZXJhdG9yID0gKGNvbnN0IE1hdHJpeCAmYil7Ci8vICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXiAvLyBBZGRlZCBjb25zdAogICAgZm9yKGludCBpPTA7aTwzO2krKykKICAgICAgICBmb3IoaW50IGo9MDtqPDM7aisrKQogICAgICAgICAgICBhcnJbaV1bal0gPSBiLmdldEFycihpLGopOwogICAgcmV0dXJuICp0aGlzOwp9CmludCBtYWluKCkKewogICAgTWF0cml4IGExLGEyLGEzLGE0OwogICAgY2luID4+IGExOwogICAgY2luID4+IGEyOwogICAgYTQgPSBhMjsKICAgIGEzID0gKGExK2E0KTsgLy8gTm8gZXJyb3JzIG5vdwogICAgY291dCA8PCBhMSA8PCBlbmRsOwogICAgY291dCA8PCBhMiA8PCBlbmRsOwogICAgY291dCA8PCBhMyA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0=