1. #include <iostream>
  2. #include <vector>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include "matrix.h"
  6. using namespace std;
  7.  
  8. matrix::matrix(int dim, bool random, bool strassen) : dim_(dim) {
  9.     if (strassen) {
  10.         int dim2 = 2;
  11.         while (dim2 < dim)
  12.             dim2 *= 2;
  13.         dim_ = dim2;
  14.     }
  15.    
  16.     data_ = new int[dim_ * dim_];
  17.     if (!random) return;
  18.  
  19.     for (int i = 0; i < dim_ * dim_; i++)
  20.         data_[i] = rand() % 10;
  21. }
  22.  
  23. void matrix::print() {
  24.     for (int i = 0; i < dim_; i++) {
  25.         for (int j = 0; j < dim_; j++)
  26.             cout << (*this)(i,j) << " ";
  27.         cout << "\n";
  28.     }
  29.     cout << "\n";
  30. }
  31.  
  32. matrix matrix::operator+(matrix b) {
  33.     matrix c(dim_, false, false);
  34.     for (int i = 0; i < dim_; i++)
  35.         for (int j = 0; j < dim_; j++)
  36.             c(i,j) = (*this)(i,j) + b(i,j);
  37.        
  38.     return c;
  39. }
  40.  
  41. matrix matrix::operator-(matrix b) {
  42.     matrix c(dim_, false, false);
  43.     for (int i = 0; i < dim_; i++)
  44.         for (int j = 0; j < dim_; j++)
  45.             c(i,j) = (*this)(i,j) - b(i,j);
  46.        
  47.     return c;
  48. }