Advertisement
Guest User

Untitled

a guest
Jan 21st, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. double det(double** a, int size)
  2. {
  3.    int i, k, l, z = 1;
  4.    double** b;
  5.    double d = 0;
  6.    b=(double**)malloc((size+1)*sizeof(double));
  7.    for(i=0;i<size+1;i++)
  8.    b[i]=(double*)malloc((size+1)*sizeof(double));
  9.    if (size == 1)
  10.       d = a[0][0];
  11.    else
  12.    {
  13.       // rozwiniecie Laplace'a względem pierwszego wiersza
  14.       for (i = 0; i < size; i++)
  15.       {
  16.          // przepisywanie wierszy
  17.          for (k = 0; k < size - 1; k++)
  18.          {
  19.             // przepisywanie kolumn
  20.              for (l = 0; l < size - 1; l++)
  21.             {
  22.                   // przepisanie komórki znajdującej się w tej
  23.                   // samej kolumnie lecz w wierszu poniżej
  24.                if (l < i)  b[k][l] = a[k + 1][l];
  25.                   // przepisanie komórki znajdującej się
  26.                   // w następnej kolumnie i wierszu poniżej
  27.                else  b[k][l]=a[k + 1][l + 1];
  28.             }
  29.          }
  30.          // wywołanie rekurencyjne
  31.          d = d + z * a[0][i] * det(b, size-1);
  32.          // zmiana znaku
  33.          z = -z;
  34.       }
  35.    }
  36.    for(i=0;i<size+1;i++)
  37.    free(b[i]);
  38.    free(b);
  39.    return d;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement