ciao a tutti, devo creare un programma che da file prenda gli elementi di una matricce quadrata e restituisca il det. ora l algoritmo credo sia giusto,ma mi da un warning (nn facendo funzionare il programma)
codice:#include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> int matri(int **M,int rc); int finale(int **M); int main(int argc,char *argv[]) { int **M; int i,j,rc; FILE *f; int prova=0; f=fopen(argv[1],"r"); while(!feof(f)) { fscanf(f,"%d",&prova); prova++; } rc=sqrt(prova); rewind(f); M=(int**)malloc(rc*sizeof(int*)); for(i=0; i<rc; i++) { M[i]=(int*)malloc(rc*sizeof(int)); for(j=0; j<rc; j++) { fscanf(f,"%d",&M[i][j]); } } printf("%d",matri(M,rc)) ; return 0; } int matri(int **M,int rc) { int sommam=0; int **TEM; int i,j,k,r,c; if (rc==2) { return finale(M); } TEM=(int**)malloc((rc-1)*sizeof(int*)); for(k=0; k<rc; k++) { r=0; c=0; for(i=1; i<rc; i++) { TEM[i]=(int*)malloc((rc-1)*sizeof(int)); for(j=0; j<rc; j++) { if(j!=k) { TEM[r][c]=M[i][j]; c++; } if(c==rc-1) { r++; c=0; } } } sommam=sommam+pow(-1,k)*(M[0][k])*matri(TEM,rc-1); } return sommam; } int finale(int **M) { return M[0][0]*M[1][1] -M[0][1]*M[1][0]; }
grazie a tutti

Rispondi quotando
