Per fare il controllo su una riga o su una colonna il principio è lo stesso di un bubblesort,solo che nel confronto dell' array se trovi due elementi simili la funzione ritorna falso,lo stesso avviene se trovi un elemento che non è compreso tra 1 e 9.
Confronta gli elementi di un array con procedimento a bolle,cioè prendendo prima il primo elemento e confrontandolo con gli altri 8,poi il secondo,poi il terzo,ecc...La condizione j!=i è necessaria,altrimenti è sempre verificato che ptr[0]=ptr[0],perchè il numero è identico.codice:bool correct(int *ptr) { int i; int j; for(j=0;j<9;j++) for(i=0;i<9;i++) { if(ptr[j]<1||ptr[j]>9) return false; if(ptr[j]==ptr[i]&&j!=i) return false; } return true; }
Se l' algoritmo riesce ad arrivare fino in fondo significa che la condizione è soddisfatta e la funzione ritorna true,la riga (o colonna) è corretta.
Per fare lo stesso con un blocco 3x3 basta fare una piccola variante di questa funzione.
Occhio che non l' ho testata,l' ho scritta così al volo,potrebbe non funzionare.

Rispondi quotando