SUDOKU

slevyn
Salve ragazzi . Dovrei fare un compito : creare un programma che una volta inserite le dimensioni del campo del sudoku , lo generi per poi giocarci . Ho girato TUTTO internet..purtroppo gli algoritmi trovati sono molto complessi ( frequento il primo anno di informatica ) . L'idea sarebbe riempire la matrice in modo corretto e poi svuotare le caselle ..ma non so proprio come muovermi

Risposte
Umby2
La matrice deve essere 9x9. E' inutile [Dimensione]

I numeri che hai messo nella matrice, sono a casaccio. Non va bene cosi'.
Ogni qualvolta generi un numero casuale, devi verificarlo se va bene o meno.
Non controlli nemmeno se la cella è già piena o meno.

Devi rivedere un bel po di cose.

slevyn
essi , ho detto appunto che mi riempie soltanto la matrice con dei numeri casuali senza rispettare le regole . Inoltre la variabile DIMENSIONE l'ho messa perchè il programma non mi deve generare solo sudoku 9x9 ...ma anche diverse dimensioni

slevyn
ho provato così ...ma ogni volta che printo la matrice me la visualizza tutta a zero :


for(i=0; i for (j=0; j[j]= 0;
}/* FINE INIZIALIZZAZIONE A 0 */




for(n=0; n< numeriDaMettere; n++) {/* INSERIMENTO NUMERI */
boolean flag = TRUE;
while(flag) {
i = rand() % (dimensione - 1 );
j = rand() % (dimensione - 1 );
numero=rand() % dimensione + 1 ;
// numero++;

if(esiste( i , j ))
if( controlloRigheColonne( numero,i , j))
// if( controlloSottoMatrice(.....)) {
{

sudoku[j] = numero;
flag = FALSE;
}
}


}






boolean esiste( int riga , int colonna)
{

if ( sudoku[riga][colonna] == 0 )
return TRUE;
}



boolean controlloRigheColonne( int valore , int riga , int colonna)
{

int i;

// ciclo che controlla se num è presente nella riga r o nella colonna c
for(i = 0; i < dimensione ; i++)
if((valore != sudoku[riga])||(valore != sudoku[colonna]))
return TRUE ;
}

Umby2
i = rand() % (dimensione - 1 ); 
j = rand() % (dimensione - 1 ); 
numero=rand() % dimensione + 1 ; 


continui ad usare "dimensione" ...

Ti consiglierei, di focalizzare la matrice 9x9, di risolvere prima questa situazione ( ... e non è facile ...)
poi semmai in seconda battuta cerchi di generalizzare

per gli indici hai usato (dimensione - 1) quindi da 0 a 8
per il numero dimensione + 1 ??? non capisco.... fino a 10 ?

slevyn
Allora per la variabile "dimensione " non c'è nessun problema , dato che se non modifico le impostazioni di gioco, essa è sempre 9 . Il problema è che quando faccio partire la funzione che ho postato , e printo a video la matrice , essa è tutta azzerata..cioè l'assegnamento sudoku[j] = numero è come se non fungesse

slevyn
dimensione = 9
è dichiarata globalmente . Se volessi modificarla nel mio menù di gioco posso farlo .
Per quanto riguarda numero = rand()% dimensione + 1 , vuole dire " pesca un numero random da 9 a 1 .

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.