Salve, devo fare un progetto per un esame all' università, ma sono rimasto un po con le spalle al muro.
In pratica devo Scrivere una funzione in C alla quale passo una matrice 15 x 10 composta da numeri che possono essere: 0,1,2 o 3.
Devo trovare il gruppo più grande possibile di 1, 2 o 3 che devono essere connessi solo tramite le direzioni cardinali.
Ad esempio passo alla funzione:
012333323
011233000
011230000

Lui dovrebbe trovarmi quel gruppo di tre che sono connessi e passarmeli a zero.

Ho scritto questa funzione per trovare il gruppo più grande e segnarmi gli indici dell elemento più in basso a destra del gruppo più grande, solo che mi trova roba assurda e non funziona:

codice:
int ricerca(int matrice[15][10] )
{
    int c,d,i,u,j,x,c1,c2,k,indo=0,indv=0;
    int *p;
    c1=1;
    p=&matrice[0][0];
    for(i=0; i<15; i++)
    {
        for (j=0; j<10; j++)
        {
            if(matrice[i][j]!=0)
            {
                x=matrice[i][j];
                if(x==matrice[i][j+1] || x==matrice[i+1][j] )
                {
                    c1=c1+1;
                    if(x!=matrice[i][j+1])
                    {
                        c1=c1;
                    }
                    if(x!=matrice[i+1][j])
                    {
                        c1=c1;
                    }
                    if(c1>k)
                    {
                        k=c1;
                        indo=i;
                        indv=j;
                        p=&matrice[i][j];
                    }
                    if(x!=matrice[i][j+1] && x!=matrice[i+1][j])
                    {
                        c1=0;
                    }
                }
            }
        }
    }
    printf("%d \n %d \n %d \n",k,indo,indv);


}