Bonjours,
Alors voilà je suis toujours avec mon sudoku, pour l'instant je travail sur un fonction me permettant d'avoir un grille rempli vérifiant les règles du sudoku.
Donc je créer un tableau 9*9.
A chaque boucle je remplie la case suivante d'un nombre aléatoire et je vérifie si la grille est bonne avec un testLigne testColonne et testBloc sur la case que je viens d'écrire, si il y a un problème je met une autre valeur déterminée aléatoirement. Dès que les trois tests sont bon je passe à la case suivante.
Mais a chaque fois que j'exécute le code, il bloque sur une case, jamais la même en plus. Quand je regarde la grille je ne vois aucun problème.
Voici le .c avec le main
Voici le fichier sudoku.c dans lequel sont les fonctions tests.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 #include <stdlib.h> #include <stdio.h> #include "struct.h" #include "sudoku.h" int main(int argc,char* argv[]) { sudoku S=creer(); int i,j; for(i=0;i<9;i++) { for(j=0;j<9;j++) { do { faireCase(S,i,j); printf("i:%d j:%d testcase:%d\n",i,j,testCase(S,i,j)); } while(!(testCase(S,i,j))); sauver(S,"essai.sdk"); } } affiche(S); return 1; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 int testCase(sudoku S,int ligne, int colonne) { return (testLigne(S,ligne) && testColonne(S,colonne) && testBloc(S,quelbloc(ligne,colonne))); } void faireCase(sudoku S,int ligne,int colonne) { static int a=1; if(a) { srand(time(NULL)); a=0; } writeValeur(S,ligne,colonne,((rand()%9)+1)); }
Personnellement je suis assez épaté par ce bogue, je ne vois pas du tout d'où il pourrais venir, si quelqu'un avait une idée ou une solution ça serai génial.
Merci
Partager