Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "iostream"
- using namespace std;
- class matrix {
- friend matrix operator+(matrix m1, matrix m2) {
- if (m1.rows != m2.rows || m1.columns != m2.columns) throw Bad_size();
- matrix m(m1.rows, m1.columns);
- for (int i = 0; i < m.rows; i++)
- {
- for (int j = 0; j < m.columns; j++)
- {
- m.elements[i][j] = m1.elements[i][j] + m2.elements[i][j];
- }
- }
- return m;
- }
- friend matrix operator-(matrix m1, matrix m2) {
- if (m1.rows != m2.rows || m1.columns != m2.columns) throw Bad_size();
- matrix m(m1.rows, m1.columns);
- for (int i = 0; i < m.rows; i++)
- {
- for (int j = 0; j < m.columns; j++)
- {
- m.elements[i][j] = m1.elements[i][j] - m2.elements[i][j];
- }
- }
- return m;
- }
- friend matrix operator*(matrix m1, matrix m2) {
- if (m1.columns != m2.rows) throw Bad_size();
- matrix m(m1.rows, m2.columns);
- double temp = 0;
- for (int i = 0; i < m1.rows; i++)
- {
- for (int j = 0; j < m2.rows; j++)
- {
- for (int k = 0; k < m2.rows; k++)
- {
- temp += m1.elements[i][k] * m2.elements[k][j];
- }
- m.add(temp);
- temp = 0;
- }
- }
- return m;
- }
- double & operator() (int i, int j)const {
- return elements[i][j];
- }
- friend istream& operator >> (istream& in, matrix& m) {
- for (int i = 0; i < m.rows; i++)
- {
- for (int j = 0; j < m.columns; j++)
- {
- in >> m(i, j);
- }
- }
- return in;
- }
- friend ostream& operator << (ostream& out, const matrix& m) {
- for (int i = 0; i < m.rows; i++)
- {
- for (int j = 0; j < m.columns; j++)
- {
- int k = m.elements[i][j];
- out << m.elements[i][j] << " ";
- }
- out << endl;
- }
- return out;
- }
- public:
- matrix() {
- }
- matrix(int r, int c) {
- rows = r;
- columns = c;
- curr_row = 0;
- curr_column = 0;
- elements = new double*[rows];
- for (int i = 0; i < rows; i++)
- {
- elements[i] = new double[columns];
- }
- }
- //~matrix() {
- // for (int i = 0; i < rows; i++)
- // {
- // delete[] elements[i];
- // }
- // delete[] elements;
- //}
- class Bad_size{};
- int rows, columns;
- double** elements;
- int curr_row, curr_column;
- void add(double value) {
- elements[curr_row][curr_column] = value;
- if (curr_column + 1 >= columns) { curr_column = 0; curr_row++; }
- else curr_column++;
- }
- };
- void main() {
- matrix m1(2, 2);
- cin >> m1;
- cout << m1;
- matrix m2(2, 2);
- cin >> m2;
- cout << m2;
- matrix m3 = m1 + m2;
- cout << m3;
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement