Advertisement
lutunovoleg

Untitled

Feb 15th, 2024
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.97 KB | Source Code | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. class matrix {
  7.     double elements[4][4]{};
  8.     matrix(double elements[4][4]){
  9.         for (int i = 0; i < 4; i++) {
  10.             for (int j = 0; j < 4; j++) {
  11.                 this->elements[i][j] = elements[i][j];
  12.             }
  13.         }
  14.     }
  15.  
  16.  
  17.     void T() {
  18.         int temp[4][4];
  19.         for (int i = 0; i < 4; i++) {
  20.             for (int j = 0; j < 4; j++) {
  21.                 temp[i][j] = this->elements[j][i];
  22.             }
  23.         }
  24.         for (int i = 0; i < 4; i++) {
  25.             for (int j = 0; j < 4; j++) {
  26.                 this->elements[i][j] = temp[i][j];
  27.             }
  28.         }
  29.     }
  30.  
  31.     double det() {
  32.         double determinant = 0;
  33.  
  34.         determinant = elements[0][0] * (elements[1][1] * elements[2][2] * elements[3][3] +
  35.                                         elements[1][2] * elements[2][3] * elements[3][1] +
  36.                                         elements[1][3] * elements[2][1] * elements[3][2]
  37.                                         - elements[1][3] * elements[2][2] * elements[3][1] -
  38.                                         elements[1][2] * elements[2][1] * elements[3][3] -
  39.                                         elements[1][1] * elements[2][3] * elements[3][2]);
  40.  
  41.         return determinant;
  42.     }
  43.  
  44.     matrix A() {
  45.         matrix result;
  46.         for (int i = 0; i < 4; i++) {
  47.             for (int j = 0; j < 4; j++) {
  48.                 result.elements[i][j] = minor(i, j) * pow(-1, i + j);
  49.             }
  50.         }
  51.         return result;
  52.     }
  53.  
  54.     double minor(int row, int col) {
  55.         int temp[3][3];
  56.         int row_shift = 0, col_shift = 0;
  57.         for (int i = 0; i < 4; i++) {
  58.             if (i == row) row_shift = 1;
  59.             for (int j = 0; j < 4; j++) {
  60.                 if (j == col) col_shift = 1;
  61.                 temp[i - row_shift][j - col_shift] = elements[i][j];
  62.             }
  63.             col_shift = 0;
  64.         }
  65.         row_shift = 0;
  66.         return det(temp, 3); // используем функцию det() для вычисления определителя подматрицы
  67.     }
  68.  
  69.     double det(int matrix[3][3], int size) {
  70.         double determinant;
  71.         if (size == 3) {
  72.             determinant = elements[0][0] * (elements[1][1] * elements[2][2] - elements[1][2] * elements[2][1])
  73.                           - elements[0][1] * (elements[1][0] * elements[2][2] - elements[1][2] * elements[2][0])
  74.                           + elements[0][2] * (elements[1][0] * elements[2][1] - elements[1][1] * elements[2][0]);
  75.         } else throw invalid_argument("size must be 3");
  76.         return determinant;
  77.     }
  78.  
  79.     friend std::ostream &operator<<(std::ostream &os, const matrix &m) {
  80.         for (int i = 0; i < 4; i++) {
  81.             for (int j = 0; j < 4; j++) {
  82.                 os << m.elements[i][j] << " ";
  83.             }
  84.             os << std::endl;
  85.         }
  86.         return os;
  87.     }
  88. };
  89.  
  90.  
  91. int main() {
  92.  
  93.  
  94.     return 0;
  95. }
  96.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement