Salve a tutti..sono lo stesso che aveva chiesto aiuto per il sudoku.. Mi ci sto ancora sbattendo... Ho definito una funzione che dovrebbe, data una matrice, e una casella della matrice, dirmi se all'interno della stessa riga,colonna o "quadrato" c'è un'altra casella in cui è possibile mettere un certo numero(anch'esso dato).
Per possibile intendo dire che non ci sono all'interno della sua riga/colonna/quadrato altre caselle con quel numero gia fissato.
Questa procedura che ho definito però non è corretta e non riesco a capire dov'è l'errore..
PROGRAMMO IN VISUAL STUDIO QUINDI NON SEGNALATEMI ERRORI COME INIZIALIZZAZIONI DENTRO I FOR PERCHE' NON SONO ERRORI..
bool More(casella c[M*M][M*M],int i,int j,int num){
int mati1,matj1;
int mati= (i/M);
int matj= (j/M);
// queste tre istruzioni per sapere in che quadrato siamo
bool contra=false,contrb=false,contrc=false;
for(int i1=0;i1<M*M;i1++){
for(int j1=0;j1<M*M;j1++){//ciclo per tutta la matrice
if((c[i1][j1].fisso==false) && ((i==i1 && j==j1)==false{
//se il campo fisso è falso e se non ci troviamo nella stessa casella
if(c[i1][j1].inum.IsIn(num)){
//se il campo rappr di interi contiene il numero in questione
mati1= (i1/M);
matj1= (j1/M);
// guardo in che quadrato ci troviamo
if(i1==i)contra=true;
// se è nella stesso riga
else if(j1==j)contrb=true;
// se è nella stessa colonna
else if(mati==mati1 && matj==matj1)contrc=true;
// se è nello stesso quadrato
}
}
}
}
if(contra==false || contrb==false || contrc==false)return false;
else return true;
//se ha trovato un numero nel campo insieme di interi che è presente solo in quella casella in quella riga oppure in quella colonna oppure in quel quadrata ritorna falso altrimenti vero.
}
PS:La casella è una struttura composta di:
un campo bool che mi dice se la casella ha un num fissato;
un campo intero che è il numero fissato;
una classe che rappresenta un insieme di interi e che serve per sapere quali numeri sono "possibili in quella casella"..
Ringrazio vivamente chi mi rispondesse..