kacxsku

Untitled

May 24th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.15 KB | None | 0 0
  1. double det ( int n, int w, int * WK, double ** A )
  2. {
  3.   int    i, j, k, m, * KK;
  4.   double s;
  5.  
  6.   if( n == 1 )                     // sprawdzamy warunek zakończenia rekurencji
  7.  
  8.     return A [ w ][ WK [ 0 ] ];    // macierz 1 x 1, wyznacznik równy elementowi
  9.  
  10.   else
  11.   {
  12.  
  13.     KK = new int [ n - 1 ];        // tworzymy dynamiczny wektor kolumn
  14.  
  15.     s = 0;                         // zerujemy wartość rozwinięcia
  16.     m = 1;                         // początkowy mnożnik
  17.  
  18.     for( i = 0; i < n; i++ )       // pętla obliczająca rozwinięcie
  19.     {
  20.  
  21.       k = 0;                       // tworzymy wektor kolumn dla rekurencji
  22.  
  23.       for( j = 0; j < n - 1; j++ ) // ma on o 1 kolumnę mniej niż WK
  24.       {
  25.         if( k == i ) k++;          // pomijamy bieżącą kolumnę
  26.         KK [ j ] = WK [ k++ ];     // pozostałe kolumny przenosimy do KK
  27.       }
  28.  
  29.       s += m * A [ w ][ WK [ i ] ] * det ( n - 1, w  + 1, KK, A );
  30.  
  31.       m = -m;                      // kolejny mnożnik
  32.  
  33.     }
  34.  
  35.     free(KK);                 // usuwamy zbędną już tablicę dynamiczną
  36.  
  37.     return s;                      // ustalamy wartość funkcji
  38.  
  39.   }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment