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:
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);
}