|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2002
Città: Roma
Messaggi: 1360
|
Funzione void
Devo calcolare il determinante di una matrice quadrata, usando l'allocazione dinamica per la matrice e funzioni void.
Questo è quello che ho scritto: #include <stdio.h> #include <stdlib.h> void scambia_righe(float **matrice, int n, int r1, int r2, int start) { int i; float tmp; for(i=start; i<n; ++i) { tmp = matrice[r1][i]; matrice[r1][i] = matrice[r2][i]; matrice[r2][i] = tmp; } } void det(float **matrice, int n, float *risultato, int start) { int r; int sgn = 1; float det_min; *risultato = 0; if(start == (n - 1)) return matrice[n-1][n-1]; for(r=start; r<n; ++r) { if(r != start) { sgn = -1; /*scambiando due righe il determinante del minore cambia di segno*/ scambia_righe(matrice, n, start, r, start); } det(matrice, n, &det_min, start+1); *risultato = sgn * matrice[start][start] * det_min; if(r != start) scambia_righe(matrice, n, start, r, start); } } int main() { int n, i, j; float **mat, risultato; printf("inserisci l'ordine della matrice quadrata\n"); scanf("%d", &n); mat = (float **)calloc(n, sizeof(float *)); for(i=0;i<n;i++) { mat[i] = (float *)calloc(n, sizeof(float)); } printf("inserisci gli elementi della matrice \n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { scanf("%f", &mat[i][j]); } } det(mat, n, &risultato, 0); printf("Determinante = %f", risultato); free(mat); } Come faccio a sostituire quel return nella funzione det? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2002
Città:
Provincia De VaRéSe ~ § ~ Lat.: 45° 51' 7" N Long.: 8° 50' 21" E ~§~ Magica Inter ~ § ~ Detto: A Chi Più Amiamo Meno Dire Sappiamo ~ § ~ ~ § ~ Hobby: Divertimento allo Stato Puro ~ § ~ ~ § ~ You Must Go Out ~ § ~
Messaggi: 8895
|
e cosa ci vuoi mettere?
MEMBRO DEL GRAN CONSIGLIO DELLE CACCOLE VERDI ~§~ Sempre E Solo Lei ~§~
__________________
Meglio essere protagonisti della propria tragedia che spettatori della propria vita
Si dovrebbe pensare più a far bene che a stare bene: e così si finirebbe anche a star meglio. Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori.Cerca solo di essere migliore di te stesso |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma questo è il mio codice !!!
![]() Codice:
if(start == (n - 1)) { *risultato = matrice[n-1][n-1] return; } Codice:
if(start == (n - 2)) { *risultato = matrice[n-2][n-2] *matrice[n-1][n-1] - matrice[n-2][n-1] *matrice[n-1][n-2]; return; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:55.