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