ehm.. era un loop infinitorisolto
![]()
questo è il codice definitivo, funziona, se a qualcuno serve...
occhio che non controlla se i calloc vanno a buon fine![]()
codice:double Determinante(double **Matrix, int Order) { if (Order==2) return (Matrix[0][0]*Matrix[1][1]-Matrix[0][1]*Matrix[1][0]); else { int cx,cy,cz,xz,sign=1; double **Compl=(double **)calloc(Order-1,sizeof(double *)); for (cx=0; cx<Order-1; cx++) *(Compl+cx)=(double *)calloc(Order-1,sizeof(double)); double Res=0; for (cx=0; cx<Order; cx++,sign=-sign) { for (cy=0,xz=0; cy<Order-1;xz++) if (xz!=cx) { for (cz=0; cz<Order-1; cz++) Compl[cy][cz]=Matrix[xz][cz+1]; cy++; } Res+=Matrix[cx][0]*Determinante(Compl, Order-1)*(double) sign; } free(Compl); return Res; } }

risolto
Rispondi quotando