#include #include using namespace std; class MyMatrix { public: MyMatrix(int dimension); MyMatrix(int rows, int columns); ~MyMatrix(); void print(); int get_rows(); int get_columns(); double get_element(int row, int column); void set_element(int row, int column, double value); MyMatrix operator + (MyMatrix A); MyMatrix operator * (MyMatrix A); void operator = (MyMatrix A); private: double* m; int row_d; int col_d; int d; }; MyMatrix::MyMatrix(int dimension) { row_d = dimension; col_d = dimension; d = dimension*dimension; m = new double[d]; unsigned int k=0; for(unsigned int i=0; i0) { m[((row-1)*col_d)+(column-1)] = value; } } MyMatrix MyMatrix::operator + (MyMatrix A) { MyMatrix* res = new MyMatrix(row_d, col_d); unsigned int k=0; for(unsigned int i=0; im[k] = m[k]+A.get_element(i+1, j+1); k++; } } return *res; } MyMatrix MyMatrix::operator * (MyMatrix A) { MyMatrix* res = new MyMatrix(row_d, col_d); unsigned int k=0; for(unsigned int i=0; im[k] = m[k]*A.get_element(i+1, j+1); k++; } } return *res; } void MyMatrix::operator = (MyMatrix A) { unsigned int k=0; for(unsigned int i=0; iprint(); cout << " rows: " << m->get_rows() << ", "; cout << "columns: " << m->get_columns() << endl; delete m; cout << endl << "2x5 matrix:" << endl; MyMatrix n(2,5); n.print(); cout << " rows: " << n.get_rows() << ", "; cout << "columns: " << n.get_columns() << endl; cout << "(1,3) = " << n.get_element(1,3) << endl; cout << "last: (2,5) = " << n.get_element(2,5) << endl; cout << "second to last element = 100: " << endl; n.set_element(2, 4, 100); n.print(); cout << endl << "addition:" << endl; cout << "matrix 1:" << endl; MyMatrix* a1 = new MyMatrix(3,3); a1->print(); cout << "matrix 2:" << endl; MyMatrix* a2 = new MyMatrix(3,3); a2->print(); cout << "result:" << endl; MyMatrix* e1 = new MyMatrix(3,3); *e1 = *a1+*a2; e1->print(); delete e1; cout << endl << "multiplication" << endl; cout << "matrix 1:" << endl; MyMatrix* m1 = new MyMatrix(3,3); a1->print(); cout << "matrix 2:" << endl; MyMatrix* m2 = new MyMatrix(3,3); m2->print(); cout << "result:" << endl; MyMatrix* e2 = new MyMatrix(3,3); *e2 = *m1 * *m2; e2->print(); delete e2; return 0; }