Advertisement
Guest User

Untitled

a guest
Jan 17th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.83 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. class matrix
  4. {
  5. private:
  6.  
  7.     int **Arr;
  8.     int rows;
  9.     int columns;
  10.  
  11. public:
  12.     matrix(); //констурктор
  13.     ~matrix(); //деструкор
  14.  
  15.     int **pntArr;
  16.     int pntRows;
  17.     int pntColumns;
  18.  
  19.     void input(); // ввод
  20.    
  21.     void print(); // вывод
  22.  
  23.     int getrows();
  24.     int getcolumns();
  25.     int getElement();
  26.     int prisv();
  27.     int ret();
  28.     void del();
  29.  
  30.     bool summMatrix(matrix matr2); //функция суммы
  31.     bool multMatrix(matrix matr2); //функция произведения
  32.     bool transp(); // функция транспонирования
  33.  
  34.     double getElement(int row, int col);
  35. };
  36.  
  37. matrix::matrix()
  38. {
  39. }
  40.  
  41. matrix::~matrix()
  42. {
  43. }
  44.  
  45. void matrix::input()
  46. {
  47.     std::cout << "Введите количество строк: ";
  48.     std::cin >> rows;
  49.     std::cout << "Введите количество столбцов: ";
  50.     std::cin >> columns;
  51.  
  52.     Arr = new int*[rows];
  53.  
  54.     for (int i = 0; i < rows; i++)
  55.     {
  56.         Arr[i] = new int[columns];
  57.     }
  58.  
  59.     for (int i = 0; i < rows; i++)
  60.     {
  61.         for (int j = 0; j < columns; j++)
  62.         {
  63.             Arr[i][j] = rand() % 10; //заполняет матрицу рандомно от 0 до 9
  64.         }
  65.     }
  66. }
  67.  
  68. void matrix::print()
  69. {
  70.     for (int i = 0; i < rows; i++)
  71.     {
  72.         for (int j = 0; j < columns; j++)
  73.         {
  74.             std::cout << Arr[i][j] << "\t";
  75.         }
  76.         std::cout << "\n";
  77.     }
  78. }
  79.  
  80. int matrix::getrows()
  81. {
  82.     return rows;
  83. }
  84.  
  85. int matrix::getcolumns()
  86. {
  87.     return columns;
  88. }
  89.  
  90. int matrix::getElement()
  91.  
  92. {
  93.     pntRows = rows;
  94.     pntColumns = columns;
  95.  
  96.     pntArr = new int*[pntRows];
  97.     for (int i = 0; i < pntRows; i++)
  98.     {
  99.         pntArr[i] = new int[pntColumns];
  100.     }
  101.     for (int i = 0; i < pntRows; i++)
  102.         for (int j = 0; j < pntColumns; j++)
  103.         {
  104.             pntArr[i][j] = Arr[i][j];
  105.         }
  106.     return 0;
  107. }
  108.  
  109.  
  110. int matrix::prisv()
  111. {
  112.     pntRows = rows;
  113.     pntColumns = columns;
  114.  
  115.     for (int i = 0; i < pntRows; i++)
  116.     {
  117.         for (int j = 0; j < pntColumns; j++)
  118.         {
  119.             pntArr[i][j] = Arr[i][j];
  120.         }
  121.     }
  122.     return 0;
  123. }
  124.  
  125. int matrix::ret()
  126. {
  127.     rows = pntRows;
  128.     columns = pntColumns;
  129.     for (int i = 0; i < rows; i++)
  130.     {
  131.         for (int j = 0; j < columns; j++)
  132.         {
  133.             Arr[i][j] = pntArr[i][j];
  134.         }
  135.     }
  136.     return 0;
  137. }
  138.  
  139. void matrix::del() // Очищение
  140. {
  141.     for (int i = 0; i < rows; i++)
  142.     {
  143.         delete[]Arr[i];
  144.     }
  145.     delete[]Arr;
  146.  
  147.     for (int i = 0; i < pntRows; i++)
  148.     {
  149.         delete[]pntArr[i];
  150.     }
  151.     delete[]pntArr;
  152.  
  153. }
  154.  
  155. bool matrix::summMatrix(matrix matrB)
  156. {
  157.     if ((rows == matrB.rows) & (columns == matrB.columns))
  158.     {
  159.         int s1[10][10];
  160.         for (int a = 0; a < rows; a++)
  161.         {
  162.             for (int b = 0; b < columns; b++)
  163.             {
  164.                 s1[a][b] = Arr[a][b];
  165.             }
  166.         }
  167.         std::cout << "Сумма матриц: \n";
  168.  
  169.         for (int i = 0; i < rows; i++)
  170.         {
  171.             for (int j = 0; j < columns; j++)
  172.             {
  173.                 s1[i][j] += matrB.Arr[i][j];
  174.             }
  175.         }
  176.         for (int i = 0; i < rows; i++)
  177.         {
  178.             for (int j = 0; j < columns; j++)
  179.             {
  180.                 std::cout << s1[i][j] << "\t";
  181.             }
  182.             std::cout << "\n";
  183.         }
  184.  
  185.         return true;
  186.  
  187.     }
  188.     std::cout << "Ошибка!";
  189.     return false;
  190. }
  191.  
  192.  
  193. bool matrix::multMatrix(matrix matrB)
  194. {
  195.     if (columns == matrB.rows)
  196.     {
  197.         double **c = new double*[rows];
  198.         c = new double*[rows];
  199.         for (int i = 0; i < rows; i++)
  200.         {
  201.             c[i] = new double[matrB.columns];
  202.             for (int j = 0; j < matrB.columns; j++)
  203.             {
  204.                 c[i][j] = 0;
  205.                 for (int k = 0; k < columns; k++)
  206.                     c[i][j] += Arr[i][k] * matrB.Arr[k][j];
  207.             }
  208.         }
  209.  
  210.         std::cout << "Произведение матриц:" << std::endl;
  211.         for (int i = 0; i < rows; i++)
  212.         {
  213.             for (int j = 0; j < matrB.columns; j++)
  214.                 std::cout << c[i][j] << "\t";
  215.             std::cout << std::endl;
  216.         }
  217.  
  218.         for (int i = 0; i < rows; i++) // очистка
  219.         {
  220.             delete[] c[i];
  221.         }
  222.         return true;
  223.     }
  224.  
  225.  
  226.     std::cout << "Ошибка!";
  227.     return false;
  228. }
  229.  
  230. bool matrix::transp()
  231. {
  232.     if (rows == columns) {
  233.         std::cout << "Tранспонированная матрица A: \n";
  234.  
  235.         int arr1[10][10];
  236.         int t = rows;
  237.         rows = columns;
  238.         columns = t;
  239.         for (int i = 0; i < rows; i++)
  240.         {
  241.             for (int j = 0; j < columns; j++)
  242.             {
  243.                 arr1[i][j] = Arr[j][i];
  244.                 Arr[j][i] = arr1[i][j];
  245.             }
  246.         }
  247.  
  248.         for (int i = 0; i < rows; i++)
  249.         {
  250.             for (int j = 0; j < columns; j++)
  251.             {
  252.                 std::cout << arr1[i][j] << "\t"; // вывод трансп
  253.             }
  254.             std::cout << "\n";
  255.         }
  256.  
  257.         return false;
  258.     }
  259.     else {
  260.         std::cout << "Ошибка!";
  261.     }
  262. }
  263.  
  264. int main()
  265. {
  266.     setlocale(LC_ALL, "Russian");
  267.  
  268.     matrix matrA, matrB;
  269.     std::cout << "Введите размеры для матрицы A: \n";
  270.     matrA.input();
  271.     matrA.getElement();
  272.     matrA.print();
  273.  
  274.     std::cout << "Введите размеры для матрицы B:";
  275.     matrB.input();
  276.     matrB.print();
  277.  
  278.     matrA.summMatrix(matrB); // сумма матриц
  279.  
  280.     matrA.multMatrix(matrB); // произведение матриц
  281.  
  282.     matrA.transp();
  283.  
  284.     matrA.del();
  285.     matrB.del();
  286.     getchar();
  287.     getchar();
  288. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement