Vladislav_Bezruk

OOP 8 lab 2 task

Sep 30th, 2021 (edited)
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int** createMatrix(int n, int m);
  6.  
  7. class Matrix {
  8.     int n, m;
  9.     int** data;
  10.    
  11.     friend Matrix mult(const Matrix &a, const Matrix &b);
  12.    
  13.     public:
  14.         Matrix () {}
  15.        
  16.         Matrix(int x, int y) : n(x), m(y) { data = createMatrix(n, m); }
  17.        
  18.         Matrix operator * (const Matrix &x) { return mult(*this, x); }
  19.        
  20.         void get(char c);
  21.        
  22.         void set(char c);
  23. };
  24.  
  25. int main() {
  26.     int an, am, bn, bm;
  27.    
  28.     cout << "Enter size of matrix A: ";
  29.     cin >> an >> am;
  30.    
  31.     cout << "Enter size of matrix B: ";
  32.     cin >> bn >> bm;
  33.    
  34.     Matrix a(an, am), b(bn, bm);
  35.    
  36.     a.set('A');
  37.     b.set('B');
  38.    
  39.     Matrix c;
  40.    
  41.     c = a * b;
  42.  
  43.     c.get('C');
  44.    
  45.     return 0;
  46. }
  47.  
  48. Matrix mult(const Matrix &a, const Matrix &b) {
  49.     int n = a.n,
  50.         m = b.m;
  51.     int sum;
  52.    
  53.     if (a.m != b.n) {
  54.         exit(1);
  55.        
  56.         cout << "Error" << endl;
  57.     }
  58.    
  59.     Matrix c(n, m);
  60.            
  61.     for (int i = 0; i < n; i++) {
  62.         for (int j = 0; j < m; j++) {
  63.             sum = 0;
  64.                    
  65.             for (int k = 0; k < a.m; k++) {
  66.                 sum += a.data[i][k] * b.data[k][j];
  67.             }
  68.                    
  69.             c.data[i][j] = sum;
  70.         }
  71.     }
  72.            
  73.     return c;
  74. }
  75.        
  76. int** createMatrix(int n, int m) {
  77.     int** matrix = new int* [n];
  78.            
  79.     for (int i = 0; i < n; i++) {
  80.         matrix[i] = new int [m];
  81.     }  
  82.    
  83.     return matrix;
  84. }
  85.  
  86. void Matrix :: set(char c) {
  87.     cout << "Enter matrix " << c << " [" << n << "x" << m << "]:" << endl;
  88.    
  89.     for (int i = 0; i < n; i++) {
  90.         cout << "\t";
  91.         for (int j = 0; j < m; j++) {
  92.             cin >> data[i][j];
  93.         }
  94.     }
  95.    
  96.     return;
  97. }
  98.  
  99. void Matrix :: get(char c) {
  100.     cout << "Matrix "<< c << " [" << n << "x" << m << "]:" << endl;
  101.    
  102.     for (int i = 0; i < n; i++) {
  103.         cout << "\t";
  104.         for (int j = 0; j < m; j++) {
  105.             cout << data[i][j] << " ";
  106.         }
  107.         cout << endl;
  108.     }
  109.    
  110.     return;
  111. }
Add Comment
Please, Sign In to add comment