Sudoku, Génération de grille
Bonjour,
Je viens de créer un petit code tout simple pour générer un grille du sudoku (remplie). Malheureusement, lorsque je lance mon programme, il tourne indéfiniment en utilisant 50% du processeur.
Je crois qu'il doit y avoir une boucle infinie mais je ne vois pas où.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| #include <iostream>
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
using namespace std;
int main(){
int grille[9][9];//déclaration de la grille + mise à zéro
for(int t=0;t<9;t++){
for(int w=0;w<9;w++){
grille[t][w] = 0;
}
}
//Pour la génération des nombres aléatoires
srand((unsigned int)time(NULL));
//Les limites pour le tirage au sort
int max = 9;
int min = 1;
bool nombre_ok;
//Pour la sélection du nombre de la grille
for(int i=0; i<9; i++){
for(int j=0; j<9; j++){
//Début de vérification du nombre pour la ligne
do{
nombre_ok = true;
grille[i][j] = (rand() % (max - min + 1)) + min;
for(int k=0; k<9; k++){
if (k!=j){
if(grille[i][k] == grille[i][j]){
nombre_ok = false;
}
}
}
//Début de vérification de nombre pour la colonne
if(nombre_ok){//Si nombre_ok vaut true, on va sortir de la boucle parce que tout est juste
//Boucle pour lister les différentes propriétés
for(int k=0; k<9; k++){
if(k!=i){
if(grille[k][j] == grille[i][j]){
nombre_ok = false;
}
}
}
}
//Fin de vérification de nombre pour la colonne
}while (!nombre_ok);
//Fin de vérification de nombre pour la ligne!
}
}
for(int v=0; v<9;v++){
for(int h=0; h<9; h++){
cout << grille[v][h];
cout << " ";
}
cout << "\n";
}
} |
En fait le problème se situe aux lignes
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| if(nombre_ok){//Si nombre_ok vaut true, on va sortir de la boucle parce que tout est juste
//Boucle pour lister les différentes propriétés
for(int k=0; k<9; k++){
if(k!=i){
if(grille[k][j] == grille[i][j]){
nombre_ok = false;
}
}
}
}
//Fin de vérification de nombre pour la colonne |
Si on les mets en commentaires, le programme fonctionne et toutes les lignes du sudoku sont correctements remplies, mais pas les collones.
J'ai relu plusieurs fois cette partie de code mais je ne vois pas pourquoi il fait bugger le programme.
Merci d'avance pour votre aide.