bonjour,

je ne comprend pas pourquoi les cases de la ligne zéro de la grille restent à 0
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
class grille{
private:
	lieu tabIndices[9][9];
public:
	grille();
	void zero();
	void generer();
	bool absentLigne(int ligne,int ch);
	bool absentColonne(int colonne,int ch);
	bool absentRegion(int region,int ch);
	bool resteCaseVide();
	void afficher();
};
 
class lieu{
private:
	std::vector<int> indices;
	int chiffre;
public:
	int getChiffre();
	void setChiffre(int i);
	void supIndices();
};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
int main(){
	grille G;
	srand(time((time_t*)0)%255);
	G.afficher();
}
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
grille::grille(){
	generer();
}
 
void grille::generer(){
	int chiffre,ligne,colonne,region;
	zero();
	while(resteCaseVide()){
		for(ligne=0;ligne<9;ligne++)
			for(colonne=0;colonne<9;colonne++){
				region=(ligne/3)*3+colonne/3;//région de 9 cases où se trouve ligne
													//et colonne
				chiffre=rand()%9+1;//aléatoire 1...9
				if(absentLigne(ligne,chiffre)&&absentColonne(colonne,chiffre)
				&&absentRegion(region,ligne))
					tabIndices[ligne][colonne].setChiffre(chiffre);
			}
	}
}
 
void grille::afficher(){
	for(int i(0);i<9;i++){
		for(int j(0);j<9;j++)
			cout<<tabIndices[i][j].getChiffre()<<" ";
		cout<<endl;
	}
}
 
bool grille::resteCaseVide(){
	for(int ligne(0);ligne<9;ligne++)
		for(int colonne(0);colonne<9;colonne++)
			if(tabIndices[ligne][colonne].getChiffre()==0)
				return true;
	return false;
}
 
void grille::zero(){
	for(int ligne(0);ligne<9;ligne++)
		for(int colonne(0);colonne<9;colonne++){
			tabIndices[ligne][colonne].supIndices();
			tabIndices[ligne][colonne].setChiffre(0);
		}
}
 
bool grille::absentLigne(int ligne,int chiffre){
	for(int i(0);i<9;i++)
		if(tabIndices[ligne][i].getChiffre()==chiffre)
			return false;
	return true;
}
 
bool grille::absentColonne(int colonne,int chiffre){
	for(int i(0);i<9;i++)
		if(tabIndices[i][colonne].getChiffre()==chiffre)
			return false;
	return true;
}
 
bool grille::absentRegion(int region,int chiffre){
	for(int i(0);i<9;i++)
		if(tabIndices[(region/3)*3+i/3][(region%3)*3+i%3].getChiffre()==chiffre) //c'est la i ème case de la région qui est testée si elle est égale à chiffre
			return false;
	return true;
}
 
int lieu::getChiffre(){
	return chiffre;
}
 
void lieu::setChiffre(int i){
	chiffre=i;
}
 
void lieu::supIndices(){
	indices.clear();
}
quelqu'un aurait-il une idée?