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

Rispondi quotando