abubaca

Untitled

Mar 27th, 2020
338
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.24 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4.  
  5. using namespace std;
  6. const int n = 4;
  7. vector<vector<double>> a(n, vector<double>(n, 0));
  8. vector<double> b(n, 0), x(n, 0);
  9.  
  10. void reverse(int k, int r)
  11. {
  12.     double c;
  13.     for (int j = k; j < n; j++)
  14.     {
  15.         c = a[k][j];
  16.         a[k][j] = a[r][j];
  17.         a[r][j] = c;
  18.     }
  19.     c = b[k];
  20.     b[k] = b[r];
  21.     b[r] = c;
  22. }
  23. void dv(int k)
  24. {
  25.     for (int j = k + 1; j < n; j++)
  26.         a[k][j] /= a[k][k];
  27.     b[k] /= a[k][k];
  28. }
  29.  
  30. void clear(int k, int r)
  31. {
  32.     for (int j = k + 1; j < n; j++)
  33.         a[r][j] -=  a[k][j] * a[r][k];
  34.     b[r] -= b[k] * a[r][k];
  35. }
  36.  
  37. int main()
  38. {
  39.     setlocale(LC_ALL, "Russian");
  40.     cout << "Введите коэфиценты" << endl;
  41.     for (int i = 0; i < n; i++)
  42.         for (int j = 0; j < n; j++)
  43.             cin >> a[i][j];
  44.     cout << "Введите свободные члены" << endl;
  45.     for (int i = 0; i < n; i++)
  46.         cin >> b[i];
  47.     for (int k = 0; k < n - 1; k++)
  48.     {
  49.         if (a[k][k] == 0)
  50.         {
  51.             int i = k + 1;
  52.             while (a[i][k] == 0)
  53.                 i++;
  54.             reverse(k, i);
  55.         }
  56.         dv(k);
  57.         for (int i = k; i < n; i++)
  58.             clear(k, i);
  59.     }
  60.     dv(n - 1);
  61.     for (int i = n-1; i >= 0; i--)
  62.     {
  63.         x[i] = b[i];
  64.         for (int j = i + 1; j < n; j++)
  65.             x[i] -= a[i][j] * x[j];
  66.         cout << "x[" << i << "]=" << x[i] << endl;
  67.     }
  68. }
Advertisement
Add Comment
Please, Sign In to add comment