Advertisement
wojtas626

[C++] Macierz LU (Dolittle)

Dec 4th, 2014
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void wypisz(int tab[], int n)
  6. {
  7.     for(int i=0; i < n; i++)
  8.     {
  9.         for(int j=0; j < n; j++)
  10.         {
  11.             cout << tab[i * n + j] << " ";
  12.         }
  13.         cout << endl;
  14.     }
  15.     cout << endl;
  16.     cout << endl;
  17. }
  18.  
  19. int main()
  20. {
  21.     int n;
  22.  
  23.     cout << "Podaj wymiar macierzy: ";
  24.     cin>>n;
  25.     int matrix[n][n];
  26.     int L[n][n];
  27.     int U[n][n];
  28.  
  29.     cout << "Podaj kolejne wyrazy macierzy (" << n*n << "):" << endl;
  30.     // wczytywanie
  31.     for(int i=0; i < n; i++)
  32.     {
  33.         for(int j=0; j < n; j++)
  34.         {
  35.             cin >> matrix[i][j];
  36.         }
  37.     }
  38.  
  39.     cout << "\nInput:\n";
  40.     wypisz(*matrix, n);
  41.  
  42.     // algorytm
  43.     for(int i=0; i < n-1; i++)
  44.     {
  45.         // dzielenie kolumny pod a(k, k)
  46.         for(int j=i+1; j < n; j++)
  47.         {
  48.             matrix[j][i] = matrix[j][i] / matrix[i][i];
  49.         }
  50.  
  51.         // obliczanie wyrazow podmacierzy
  52.         for(int j = i + 1; j < n; j++)
  53.         {
  54.             for(int k = i + 1; k < n; k++)
  55.             {
  56.                 matrix[j][k] = matrix[j][k] - (matrix[j][i] * matrix[i][k]);
  57.             }
  58.         }
  59.     }
  60.  
  61.  
  62.     // gora L na 0 i gora U
  63.     for(int i = 0; i < (n - 1); i++)
  64.     {
  65.         for(int j = i; j < n; j++)
  66.         {
  67.             L[i][j] = 0;
  68.             U[i][j] = matrix[i][j];
  69.         }
  70.     }
  71.     // przekatna L na 1 i przekatna U
  72.     for(int i = 0; i < n; i++)
  73.     {
  74.         L[i][i] = 1;
  75.         U[i][i] = matrix[i][i];
  76.     }
  77.     // dol L i dol U na 0
  78.     for(int i = 1; i < n; i++)
  79.     {
  80.         for(int j = 0; j < i; j++)
  81.         {
  82.             L[i][j] = matrix[i][j];
  83.             U[i][j] = 0;
  84.         }
  85.     }
  86.  
  87.     cout << "Macierz L: \n";
  88.     wypisz(*L, n);
  89.     cout << "Macierz U: \n";
  90.     wypisz(*U, n);
  91.  
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement