ca va toujours pas, ca commence a me desesperer tout ca
snif
ca va toujours pas, ca commence a me desesperer tout ca
snif
Il y a un truc que je comprends pas:
... Pourquoi tu fais pas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 pos.lig=i; pos.col=j;
A quoi ça sert d'utiliser un objet pour initialiser une variable de type int?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 lig=i; col=j;
Si je me trompe n'hésite pas à me le dire!
Pourquoi ne pas les appeler lig_pos ou lig_es? Ca serait plus clair...
bonjour,
entre temps j'ai changé...
y a une structure essai fi
tel que
essai fi
{
position pos; // structure position contenant la position et la lig
queue<int>fl;
};
voila donc ca serait fi.pos.lig et fi.pos.col
mais ca marche tj pas...
merci
Salut les gars, je suis aussi de l'iut...(va falloir ouvrir un forum d'entraide rien que pour nous...)
bon déjà je peux malheureusement pas t'aider alain. j'ai trouver une source en vb qui utilise apparament la même méthode, si tu as le temps et que tu connait un peu le vb, tu peux te pencher dessus, ca t'aidera peut-être.
sinon, j'ai passé un bout de temps sur la même méthode que vous, et après un long débat avec une prof, bin cette méthode était à chier...^^, surtout qu'elle ne marchait pas vraiment chez moi. d'après ce qu'elle m'a dit, il faut :
-une boucle principale qui tourne tant que la pile essais n'est pas vide ;
-une boucle qui empile la pile essais ;
-une autre qui la dépile.
j'ai passé un petit moment à utiliser cet méthode, et j'ai pondu mon algo :
une fois compiler, le programme me fait les 2 premières lignes, puis paf, plus de solution, il fait marche arrière, il prend un autre nombre dans la pile, il avance, et au début de la 3e ligne, re-marche arrière, et au final il me met 2x '9' dans une case, tourne encore et encore, me mets des erreurs partout, et finis sur un 'segmentation fault', parce que la pile essais est vide... si quelqu'un voit mon erreur, qu'il me fasse signe... moi je vvais encore passer 2 nuits dessus...
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
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129 void sudoku(int grille[9][9]) { stack<essai> essais; // pile essais int i = 0; // compteur des lignes de la grille int j = 0; // compteur des colonnes de la grille essai e; // essai sur lequel on travaille /* si la 1ere case que l'on traite n'est pas vide, on passe à la suivante jusqu'a tomber sur une case vide */ while (grille[j][i] != 0) { augmenter(i,j); } // on définit les coordonnees de la 1ere case à traiter e.pos.lig = i; e.pos.col = j; e.file = candidats(e.pos, grille); // on cherche les candidats pour la 1ere case essais.push(e); // on empile le 1er essai sur la pile essais // boucle principale while (!essais.empty()) // on travaille jusqu'a ce que la pile essais soit vide { e = essais.top(); // on va travailler sur le haut de la pile essais.pop(); // on supprime l'essai sur lequel on travaille // boucle qui empile essais, si la file de l'essai qui est sur le haut de la pile essais n'est pas vide while(!e.file.empty()) { grille[j][i] = e.file.front(); // on met le 1er candidat dans la grille e.file.pop(); // et on le supprime de la file essais.push(e); // puis on empile ce qui reste // on passe à la prochaine case vide while (grille[j][i] != 0) { augmenter(i,j); } e.pos.lig = i; // on définit ses coordonnees e.pos.col = j; e.file = candidats(e.pos,grille); // on cherche ses candidats // puis si la case qui suit a un candidat, on continue, sinon on sort } // boucle qui depile essais, si la file de l'essai qui est sur le haut de la pile essais est vide while(e.file.empty()) { e = essais.top(); // on recupere l'essai du haut de la pile essais.pop(); // supprime l'essai en cours de la pile // on se repositionne sur la case precedente i = e.pos.lig; j = e.pos.col; grille[j][i] = 0; // et on met cette case a 0 e = essais.top(); // puis on regarde à nouveau le haut de la pile ; si sa file est vide, on sort de la boucle, sinon, on recommence } if (j == 8 and i == 8) // si on arrive sur la derniere case { cout << endl; // on affiche la grille afficherCarre(grille); } } }
voilà merci et bonne chance à toi alain![]()
slt je regarde ça ce soir, et je te dis...
encore merci...
c clair que qu'il faudrait qu'on ouvre un forum d'entraide...
merci
Attention, ma solution n'est pas juste, hein, il y a une erreur.. pas que tu la pompes comme ca ^^
reggae, j'ai déjà regarder tout ca, mais les programmes ne fonctionnent pas exactement comme le notre ; et comme c'est un sujet distribué par les profs, il faut qu'on se tienne aux instructions...
Partager