Salut,
En lisant ton code, j'avoue que je ne comprend pas l'utilité du second "if(k!=j)"
1 2 3 4 5 6
| if (k!=j){
if(grille[j][k] == grille[i][j]){
nombre_ok = false;
}
}
} |
Ce n'est pas très optimisé mais à la place de ce if, je refaire un boucle sur les colonnes comme tu l'as fais sur les lignes.
En gros, tu recopies ta boucle sur k en remplaçant j par i et en faisant attention au sens de tes indices c'est à dire il faut faire le test "if(grille[k][i] == grille[i][j])"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
for(int i=0; i<9; i++){
for(int j=0; j<9; j++){
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;
}
}
for(int k=0; k<9; k++){
if (k!=i){
if(grille[k][j] == grille[i][j]){
nombre_ok = false;
}
}
}while (!nombre_ok);
}
} |
Après, lorsque çà marche tu peux chercher à optimiser code en mettant des points d'arrêts. Dans ce cas c'est rapide et pas très lourd mais lorsqu'il y a trop de boucle çà peut devenir très lourd
Bon courage...
Partager