Advertisement
DacCum

ООП лаб 7(1)

Nov 5th, 2021
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class matrix {
  6.     private:
  7.         int size_line,
  8.             size_column,
  9.             **p_matrix;
  10.     public:
  11.         matrix() {
  12.             size_line = 0;
  13.             size_column = 0;
  14.             p_matrix = NULL;
  15.         }
  16.         matrix(int _size_line, int _size_column) {
  17.             size_line = _size_line;
  18.             size_column = _size_column;
  19.             p_matrix = new int* [size_line];
  20.             for (int i_line = 0; i_line < size_line; i_line++) {
  21.                 p_matrix[i_line] = new int[size_column];
  22.                 for (int i_column = 0; i_column < size_column; i_column++)
  23.                     p_matrix[i_line][i_column] = 0;
  24.             }
  25.         }
  26.         void input() {
  27.             cout << "Enter size of line: ";
  28.             cin >> size_line;
  29.             cout << "Enter size of column: ";
  30.             cin >> size_column;
  31.             cout << "Enter elements your matrix: " << endl;
  32.             p_matrix = new int* [size_line];
  33.             for (int i_line = 0; i_line < size_line; i_line++) {
  34.                 p_matrix[i_line] = new int[size_column];
  35.                 for (int i_column = 0; i_column < size_column; i_column++)
  36.                     cin >> p_matrix[i_line][i_column];
  37.             }
  38.         }
  39.         void print() {
  40.             if (p_matrix == NULL) {
  41.                 cout << "ERROR: empty matrix." << endl;
  42.                 return;
  43.             }
  44.  
  45.             for (int i_line = 0; i_line < size_line; i_line++) {
  46.                 for (int i_column = 0; i_column < size_column; i_column++)
  47.                     cout << p_matrix[i_line][i_column] << '\t';
  48.                 cout << endl;
  49.             }
  50.         }
  51.         matrix operator* (const matrix &B) {
  52.             if (size_column != B.size_line) {
  53.                 matrix ERROR;
  54.                 cout << "ERROR: unsuitable matrices." << endl;
  55.                 return ERROR;
  56.             }
  57.  
  58.             matrix result(size_line, B.size_column);
  59.             for (int i_fixed_line = 0; i_fixed_line < size_line; i_fixed_line++)
  60.                 for (int i_fixed_col = 0; i_fixed_col < B.size_column; i_fixed_col++)
  61.                     for (int i_dynamic = 0; i_dynamic < size_column; i_dynamic++)
  62.                         result.p_matrix[i_fixed_line][i_fixed_col] += p_matrix[i_fixed_line][i_dynamic] * B.p_matrix[i_dynamic][i_fixed_col];
  63.             return result;
  64.         }
  65. };
  66.  
  67. int main() {
  68.     matrix A;
  69.     cout << "Enter matrix A: " << endl;
  70.     A.input();
  71.     matrix B;
  72.     cout << "Enter matrix B: " << endl;
  73.     B.input();
  74.    
  75.     cout << "Result A * B: " << endl;
  76.     matrix C;
  77.     C = A * B;
  78.     C.print();
  79.  
  80.     return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement