Subscripted value is neither array nor pointer(righa 26 -36)

di il
2 risposte

Subscripted value is neither array nor pointer(righa 26 -36)

#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?

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte