Advertisement
LegoSosiska

aa

May 17th, 2022
741
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.66 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. void cout(std::vector<std::vector<double>>& matrix) {
  5.     for (int i = 0; i < matrix.size(); ++i) {
  6.         for (int j = 0; j < matrix[i].size(); ++j) {
  7.             std::cout << matrix[i][j] << ' ';
  8.         }
  9.         std::cout << "\n";
  10.     }
  11.     std::cout << "\n";
  12. }
  13.  
  14. void dive(std::vector<std::vector<double>>& matrix, int i, int j) {
  15.     if (i >= matrix.size()) return;
  16.     if (matrix[i].size() <= j) return;
  17.     if (matrix[i][j] == 0) {
  18.         int i1 = i;
  19.         while (i1 < matrix.size() && matrix[i1][j] == 0) {
  20.             ++i1;
  21.         }
  22.         if (i1 >= matrix.size()) {
  23.             dive(matrix, i, j + 1);
  24.             return;
  25.         }
  26.         if (matrix[i1][j] == 0) {
  27.             dive(matrix, i, j + 1);
  28.             return;
  29.         }
  30.         std::swap(matrix[i], matrix[i1]);
  31.     }
  32.     for (int i1 = i + 1; i1 < matrix.size(); ++i1) {
  33.         double k = matrix[i1][j] / matrix[i][j];
  34.         for (int j1 = j; j1 < matrix[i1].size(); ++j1) {
  35.             matrix[i1][j1] -= matrix[i][j1] * k;
  36.             cout(matrix);
  37.         }
  38.     }
  39.     dive(matrix, i + 1, j + 1);
  40. }
  41.  
  42. int main() {
  43.     int n, m;
  44.     std::cin >> n >> m;
  45.     std::vector<std::vector<double>> matrix(n, std::vector<double>(m));
  46.     std::vector<std::string> ans;
  47.     for (int i = 0; i < n; ++i) {
  48.         for (int j = 0; j < m; ++j) {
  49.             std::cin >> matrix[i][j];
  50.         }
  51.     }
  52.     std::cout << "\n";
  53.     dive(matrix, 0, 0);
  54.     cout(matrix);
  55.     for (int i = matrix.size() - 1; i >= 0; --i) {
  56.         if (matrix[i][m - 1] == 0) continue;
  57.         if (matrix[i][m - 2] == 0) {
  58.             std::cout << "no roots";
  59.             return 0;
  60.         }
  61.         else {
  62.             char letters = 'a';
  63.             for (int j = m - 2; j > 0 && i > 0; --j) {
  64.                 if (matrix[i][j - 1] != 0) {
  65.                     std::string s;
  66.                     s.push_back(letters);
  67.                     ans.push_back(s);
  68.                     letters = (letters + 1 - 'a') % 27 + 'a';
  69.                     continue;
  70.                 }
  71.                 else {
  72.                     //сделать переменную отвечающую за прошлые корни и подконнектить к массиву анс, также флаг на присутствие до пустых членов
  73.                 }
  74.             }
  75.             break;
  76.         }
  77.     }
  78.     for (int i = 0; i < n; ++i) {
  79.         if (matrix[i][i] == 0) break;
  80.         std::cout << "x" << i + 1 << ": " << matrix[i][m - 1] / matrix[i][i] << "\n";
  81.     }
  82. }
  83.  
  84. /*
  85. 4 4
  86. 1 1 -3 -1
  87. 2 1 -2 1
  88. 1 1 1 3
  89. 1 2 -3 1
  90.  
  91. 4 4
  92. 2 1 1 2
  93. 1 3 1 5
  94. 1 1 5 -7
  95. 2 3 -3 14
  96. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement