Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2018
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.61 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class Matrix {
  6.  
  7. private:
  8.     int **mas;
  9.     int n;
  10.  
  11.     void Create() {
  12.         mas = new int *[n];
  13.         for (int i = 0; i < n; i++)
  14.             mas[i] = new int[n];
  15.     }
  16.  
  17.     void GetMatr(int **mas, int **p, int i, int j, int m) {
  18.         int k, l, d1, d2;
  19.         d1 = 0;
  20.         for (k = 0; k < m - 1; k++) {
  21.             if (k == i) d1 = 1;
  22.             d2 = 0;
  23.             for (l = 0; l < m - 1; l++) {
  24.                 if (l == j) d2 = 1;
  25.                 p[k][l] = mas[k + d1][l + d2];
  26.             }
  27.         }
  28.     }
  29.  
  30.     int Det(int **mas, int n) {
  31.         int i, j, k, m;
  32.         int **p;
  33.         p = new int *[n];
  34.         for (i = 0; i < n; i++)
  35.             p[i] = new int[n];
  36.         j = 0;
  37.         k = 1;
  38.         m = n - 1;
  39.         if (n < 1) {
  40.             cout << "Определитель вычислить невозможно";
  41.         }
  42.         if (n == 1) {
  43.             j = mas[0][0];
  44.             return (j);
  45.         }
  46.         if (n == 2) {
  47.             j = mas[0][0] * mas[1][1] - (mas[1][0] * mas[0][1]);
  48.             return (j);
  49.         }
  50.         if (n > 2) {
  51.             for (i = 0; i < n; i++) {
  52.                 GetMatr(mas, p, i, 0, n);
  53.                 j = j + k * mas[i][0] * Det(p, m);
  54.                 k = -k;
  55.             }
  56.         }
  57.         return (j);
  58.     }
  59.  
  60. public:
  61.     Matrix(int i) : n(i) { Create(); }
  62.  
  63.     void setMatrix() {
  64.         for (int i = 0; i < n; i++) {
  65.             for (int j = 0; j < n; j++) {
  66.                 cout << "mas[" << i << "][" << j << "]= ";
  67.                 cin >> mas[i][j];
  68.             }
  69.         }
  70.     }
  71.  
  72.     void trans() {
  73.         int **tempT;
  74.         tempT = new int *[n];
  75.         for (int i = 0; i < n; i++)
  76.             tempT[i] = new int[n];
  77.         for (int i = 0; i < n; i++) {
  78.             for (int j = 0; j < n; j++) {
  79.                 tempT[j][i] = mas[i][j];
  80.             }
  81.         }
  82.         for (int i = 0; i < n; i++) {
  83.             for (int j = 0; j < n; j++) {
  84.                 mas[i][j] = tempT[i][j];
  85.             }
  86.         }
  87.     }
  88.  
  89.     int determinant() {
  90.         int m = Det(mas, n);
  91.         return m;
  92.     }
  93.  
  94.     void edit(int i, int j, int m){
  95.         mas[i][j] = m;
  96.     }
  97.  
  98.     void print() {
  99.         int i, j;
  100.         for (i = 0; i < n; i++) {
  101.             for (j = 0; j < n; j++)
  102.                 cout << mas[i][j] << " ";
  103.             cout << endl;
  104.         }
  105.     }
  106. };
  107.  
  108. int main() {
  109.     int n;
  110.     cout<< "n: ";
  111.     cin >> n;
  112.     Matrix M(n);
  113.     M.setMatrix();
  114.     cout << M.determinant() << endl;
  115.     M.trans();
  116.     M.print();
  117.     return 0;
  118. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement