Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double det(double** a, int size)
- {
- int i, k, l, z = 1;
- double** b;
- double d = 0;
- b=(double**)malloc((size+1)*sizeof(double));
- for(i=0;i<size+1;i++)
- b[i]=(double*)malloc((size+1)*sizeof(double));
- if (size == 1)
- d = a[0][0];
- else
- {
- // rozwiniecie Laplace'a względem pierwszego wiersza
- for (i = 0; i < size; i++)
- {
- // przepisywanie wierszy
- for (k = 0; k < size - 1; k++)
- {
- // przepisywanie kolumn
- for (l = 0; l < size - 1; l++)
- {
- // przepisanie komórki znajdującej się w tej
- // samej kolumnie lecz w wierszu poniżej
- if (l < i) b[k][l] = a[k + 1][l];
- // przepisanie komórki znajdującej się
- // w następnej kolumnie i wierszu poniżej
- else b[k][l]=a[k + 1][l + 1];
- }
- }
- // wywołanie rekurencyjne
- d = d + z * a[0][i] * det(b, size-1);
- // zmiana znaku
- z = -z;
- }
- }
- for(i=0;i<size+1;i++)
- free(b[i]);
- free(b);
- return d;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement