Jater

VLAD_SLAU

Dec 19th, 2020 (edited)
528
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <math.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     int n, k=0;
  11.     cin >> n;
  12.     double a[n][n + 1];
  13.     for (int i = 0; i < n; i++)
  14.         for (int j = 0; j < n+1; j++)
  15.             cin >> a[i][j];
  16.     for (k; k < n-1; k++) //гуляем по алгоритму n-1 раз
  17.     {
  18.         int max_row = k;
  19.         double max_collumn_value = a[k][k];
  20.         for (int  i = k; i <= n-1; i++)//ищем максимальное по модулю значением
  21.         {
  22.             if (max_collumn_value < fabs(a[i][k])) {
  23.                 max_collumn_value = a[i][k];
  24.                 max_row = i;
  25.             }
  26.         }
  27.         for (int i = 0; i < n+1; i++)//обмен местами элемента k строки и строки с максимальным модулем
  28.         {
  29.             int reserved = a[k][i];
  30.             a[k][i] = a[max_row][i];
  31.             a[max_row][i] = reserved;
  32.         }
  33.         for (int i = 0; i < n+1; i++)//делим элементы строки k на a[k][k]
  34.         {
  35.             a[k][i] = (double)a[k][i]/(double)a[k][k];
  36.         }
  37.        
  38.         for (int i = 0; i < n; i++)
  39.         {
  40.             if (i != k)
  41.                 for (int j = 0; j < n + 1; j++)
  42.                 {
  43.                     a[i][j] = a[i][j]-a[k][j]*a[i][k];
  44.                 }
  45.         }
  46.     }
  47.     for (int i = 0; i < n; i++){
  48.         cout.setf(ios::fixed);  // вывод в фиксированном формате
  49.         cout.precision(4);      // вывод до 6 знака после точки, включительно
  50.         cout << a[i][n] << endl;
  51.     }
  52. }
RAW Paste Data