You are on page 1of 7

-------------D=A+B--------------

#include <iostream>
using namespace std;

class Matrix {
int row, col, ** a;
public:
Matrix(int row, int col) {
this->row = row;
this->col = col;
a = new int* [row];
for (int i = 0; i < row; i++) {
a[i] = new int[col];
}
}

friend istream& operator >> (istream& in, Matrix& obj) {


for (int i = 0; i < obj.row; i++) {
for (int j = 0; j < obj.col; j++) {
in >> obj.a[i][j];
}
}
return in;
}

friend ostream& operator << (ostream& out, Matrix& obj) {


for (int i = 0; i < obj.row; i++) {
for (int j = 0; j < obj.col; j++) {
out << obj.a[i][j] << " ";
}
out << endl;
}
return out;
}

Matrix operator + (Matrix another) {


if (row != another.row || col != another.col)
throw "Wrong size";

Matrix C(row, col);


for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
C.a[i][j] = a[i][j] + another.a[i][j];
}
}
return C;
}

virtual ~Matrix() {
for (int i = 0; i < row; i++)
delete[] a[i];
delete[] a;
}
};

int main() {
Matrix A(2, 2);
cin >> A;
Matrix B(2, 2);
cin >> B;
Matrix C(2, 2);
Matrix D = A + B;
cout << D;
return 0;
}
-------------D=A-B--------------
#include <iostream>
using namespace std;

class Matrix {
int row, col, ** a;
public:
Matrix(int row, int col) {
this->row = row;
this->col = col;
a = new int* [row];
for (int i = 0; i < row; i++) {
a[i] = new int[col];
}
}

friend istream& operator >> (istream& in, Matrix& obj) {


for (int i = 0; i < obj.row; i++) {
for (int j = 0; j < obj.col; j++) {
in >> obj.a[i][j];
}
}
return in;
}

friend ostream& operator << (ostream& out, Matrix& obj) {


for (int i = 0; i < obj.row; i++) {
for (int j = 0; j < obj.col; j++) {
out << obj.a[i][j] << " ";
}
out << endl;
}
return out;
}

Matrix operator - (Matrix another) {


if (row != another.row || col != another.col)
throw "Wrong size";

Matrix C(row, col);


for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
C.a[i][j] = a[i][j] - another.a[i][j];
}
}
return C;
}

virtual ~Matrix() {
for (int i = 0; i < row; i++)
delete[] a[i];
delete[] a;
}
};

int main() {
Matrix A(2, 2);
cin >> A;
Matrix B(2, 2);
cin >> B;
Matrix C(2, 2);
Matrix D = A - B;
cout << D;
return 0;
}
-------------D=A*B--------------
#include <iostream>
using namespace std;

class Matrix {
int row, col, **a;
int const N=2;
public:
Matrix(int row, int col) {
this->row = row;
this->col = col;
a = new int* [row];
for(int i = 0; i < row; i++) {
a[i] = new int[col];
}
}

friend istream& operator >> (istream& in, Matrix& obj) {


for(int i = 0; i < obj.row; i++) {
for(int j = 0; j < obj.col; j++) {
in >> obj.a[i][j];
}
}
return in;
}

friend ostream& operator << (ostream& out, Matrix& obj) {


for(int i = 0; i < obj.row; i++) {
for(int j = 0; j < obj.col; j++) {
out << obj.a[i][j] << " ";
}
out << endl;
}
return out;
}

Matrix operator + (Matrix another) {


if(row != another.row || col != another.col)
throw "Wrong size";

Matrix C(row, col);


for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
C.a[i][j] = a[i][j] + another.a[i][j];
}
}
return C;
}
Matrix operator - (Matrix another) {
if(row != another.row || col != another.col)
throw "Wrong size";

Matrix E(row, col);


for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
E.a[i][j] = a[i][j] - another.a[i][j];
}
}
return E;
}
Matrix operator * (Matrix another) {
if(row != another.row || col != another.col)
throw "Wrong size of matrix";

Matrix Q(row, col);


for(int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
Q.a[i][j]=0;
for (int k=0; k<N; k++)
Q.a[i][j] = Q.a[i][j] + (a[i][k] * another.a[k][j]);
}
}
return Q;
}
Matrix operator == (Matrix another){
bool equal=0;
if(row != another.row || col != another.col)
throw "Wrong size";

Matrix C(row, col);


for(int i = 0; i < row; i++) {
for(int j = 0; j < col; j++) {
C.a[i][j] = a[i][j] * another.a[i][j];
}
}
return C;
}

virtual ~Matrix() {
for(int i = 0; i < row; i++)
delete [] a[i];
delete [] a;
}
};

int main() {
Matrix A(2,2);
cin >> A;
Matrix B(2,2);
cin >> B;
Matrix D=A*B;
cout<<D;

//ToDo List: overload the given operators


// + - * == !=
// [] - determimant
// () - inverser matrix
return 0;
}
-----------D=(A==B)------------

#include <iostream>
using namespace std;
class Matrix {
int row, col, ** a;
public:
Matrix(int row, int col) {
this->row = row;
this->col = col;
a = new int* [row];
for (int i = 0; i < row; i++) {
a[i] = new int[col];
}
}

friend istream& operator >> (istream& in, Matrix& obj) {


for (int i = 0; i < obj.row; i++) {
for (int j = 0; j < obj.col; j++) {
in >> obj.a[i][j];
}
}
return in;
}

friend ostream& operator << (ostream& out, Matrix& obj) {


for (int i = 0; i < obj.row; i++) {
for (int j = 0; j < obj.col; j++) {
out << obj.a[i][j] << " ";
}
out << endl;
}
return out;
}

int a1 = 0, a2 = 0, Q = 0;

Matrix operator == (Matrix another) {


if (row != another.row || col != another.col)
throw "Wrong size";
Matrix C(row, col);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
a1 += a[i][j];
a2 += another.a[i][j];
if (a[i][j] == another.a[i][j]) {
Q += a[i][j];
}
}
}
if (Q == a1 && Q == a2) {
cout << "YES" << endl;
}
else {
cout << "NO" << endl;
}
return C;
}

virtual ~Matrix() {
for (int i = 0; i < row; i++)
delete[] a[i];
delete[] a;
}
};
int main() {
Matrix A(2, 2);
cin >> A;
Matrix B(2, 2);
cin >> B;
Matrix C(2, 2);
Matrix D = (A == B);
cout << D;
return 0;
}
--------Determinat--------
Int operator ~ () {

Matrix D(row, col);


Int det;
If (row == 1) {
Return a[0][0];
}
Else if (row == 2) {
Return ((a[0][0] * a[1][1]) – (a[1][0] * a[0][1]));
}
Else if (row == 3) {
Det = ((a[0][0] * a[1][1] * a[2][2]) + (a[0][1] * a[1][2] *
a[2][1]) + (a[0][2] * a[1][0] * a[2][1])) – (a[0][2] * a[1][1] * a[2][0])
– (a[0][1] * a[1][0] * a[2][2]) – (a[0][0] * a[1][2] * a[2][1]);
Return det;
}
Else if (row == 4) {
Int a11 = a[0][0] * (((a[1][1] * a[2][2] * a[3][3]) + (a[1]
[2] * a[2][3] * a[3][1]) + (a[2][1] * a[1][3] * a[3][2])) – ((a[1][3] *
a[2][2] * a[3][1]) + (a[1][3] * a[2][1] * a[3][3]) + (a[1][1] * a[2][3] *
a[3][2])));
Int a12 = a[0][1] * (((a[1][0] * a[2][2] * a[3][3]) + (a[1]
[2] * a[2][3] * a[3][0]) + (a[2][0] * a[3][2] * a[1][3])) – ((a[1][3] *
a[2][2] * a[3][0]) + (a[1][0] * a[2][3] * a[3][2]) + (a[2][0] * a[3][3] *
a[1][2])));
Int a13 = a[0][2] * (((a[1][0] * a[2][1] * a[3][3]) + (a[1]
[1] * a[2][3] * a[3][0]) + (a[2][0] * a[3][1] * a[1][3])) – ((a[1][0] *
a[3][1] * a[2][3]) + (a[2][0] * a[1][1] * a[3][3]) + (a[1][3] * a[2][1] *
a[3][0])));
Int a14 = a[0][3] * (((a[1][0] * a[2][1] * a[3][2]) + (a[1]
[1] * a[2][2] * a[3][0]) + (a[2][0] * a[3][1] * a[1][2])) – ((a[1][2] *
a[2][1] * a[3][0]) + (a[1][1] * a[2][0] * a[3][2]) + (a[1][0] * a[3][1] *
a[2][2])));
Return (a11 – a12 + a13 – a14);
}
}

};

Int main() {
Matrix A(2,2);
Cin >> A;
Matrix B(2,2);
Cin >> B;
Matrix C = A + B;
Matrix D = A – B;
Cout << C << D;
Matrix E=A*B;
Cout<<E;
If (A!=B) cout << «No equal»<<endl;
Else cout << «Equal»<<endl;
Cout<< «Enter elements of matrix to find the determinant:»<<endl ;
Matrix G(3 , 3);
Cin>> G;
Cout << ~G;
//ToDo List: overload the given operators
// + - * == != - complete
// [] – determimant -complete
// () – inverser matrix
Return 0;
}

You might also like