#include <stdio.h>
#include <stdlib.h>
int regione(int**,int**,int ,int ,int ,int );
int cammino(int**,int**,int ,int ,int ,int );
int liberamem(int**,int**,int);
int main()
{
int** mappa,cartina;
int r=10,c=10;
int i,j;
FILE *fp;
if((fp=fopen("cartina.txt","r"))!=NULL)
{
printf(" Il file 'cartina.txt' non può essere aperto\n");
return 0;
}
fscanf(fp,"%d %d",&r,&c);
cartina=(int**) malloc(r*sizeof(int*));
for(i=0;i<r;i++)
cartina[i]=(int*) malloc(c* sizeof(int));
****mi da errore qui****
mappa =(int**) malloc(r*sizeof(int*));
for(i=0;i<r;i++)
mappa[i]=(int*) malloc(c*sizeof(int));
for(i=0;i<r;i++)
for(j=0;j<c;j++)
fscanf(fp,"%d",&cartina[i][j]);
*****e qui|****
for(i=0;i<r;i++)
for(j=0;j<c;j++)
mappa[i][j]=0;
fclose(fp);
liberamem(cartina,mappa,r);
}
int regione(int** mappa,int** cartina,int i,int j,int r,int c)
{
int reg=0;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
if(cartina[i][j]==0 && mappa[i][j]==0)
{
cammino(mappa,cartina,i,j,r,c);
reg ++;
}
}
return reg;
}
int cammino(int** mappa,int** cartina,int i,int j,int r,int c)
{
if(i<0 || i>=r || j<0 || j>=c) return 0;
if(cartina[i][j]==0 && mappa[i][j]==0)
{
mappa[i][j]=1;
cammino(mappa,cartina,i+1,j,r,c);
cammino(mappa,cartina,i,j+1,r,c);
cammino(mappa,cartina,i-1,j,r,c);
cammino(mappa,cartina,i,j-1,r,c);
}
return 0;
}
liberamem(int** cartina,int** mappa,int r)
{
int i;
for(i=0;i<r;i++)
{
free(mappa[i]);
free(cartina[i]);
}
free(mappa);
free(cartina);
}
Sarà che sono un po' stanco ma io qua non capisco perchè mi da errore!!!Qualcuno potrebbe darmi una mano?