Bonjour je me suis lancé le défis de programmer un sudoku 9*9 pour m'entrainer. Le soucis c'est que je rencontre un problème sur lequel je bloque depuis maintenant qlq heures. Mais avant de vous l'expliquer je vais vous montrer le code. Il est composé de 3 fonctions principales :
et la 3 èmes fonctions gère si un nombre peut etre placé ou non :
void check_valid (int x, int y, char n){
if(y>9 || x > 9){
printf("erreur x=%d et y=%d",x,y);
exit(1);
}
if(y < 0 || x < 0){
printf("erreur");
exit(1);
}
//Verification
for(int i = 0; i < 9; i++){
for(int j = 0; j < 9; j++){
if(tab[x][y]!='.'){
printf("blocked.\n");//Provisoire
return 0;
}else {
tab[x][y] = n;
new_grid(x,y,n);
return 1;
}
}
}
}
La fonction main :
int main(int argc, char *argv){
//Provisoire
char c = '1';
int x = 0, y = 0;
print_grid();
int test = 0;
//Provisoire
while(test<54){
printf("\nEntrez une valeur x : ");
scanf("%d",&x);
printf("Entrez une valeur y : ");
scanf("%d",&y);
test++;
check_valid(x,y,c);
}
//déclaration :
#include <stdio.h>
#include <stdlib.h>
int tab[9][9];
int sauvegarde = 0;
void check_valid (int x, int y, char n);
int print_grid();
int new_grid(int x, int y, char n);
int empty = 0;
Le soucis est que lorsque je rentre nombre, à l'étape suivante celui ci n'est plus à sa position mais à la nouvelle position que je lui ai assigné. Comment faire en sorte que sa position initialement choisi lors de la première étape soit sauvegarder ?? Soyez indulgent, je code en C depuis peu.
Pourquoi la fonction d'affichage fait-elle des assignations ? Ce n'est pas son rôle.
Et pourquoi new_grid() fait-elle de l'affichage ? Ici aussi ce n'est pas rôle.
Et ses assignations sont plutôt mal placées (je ne pense qu'à new_grid()) : tu les fais i x j fois. Elle doivent se trouver en-dehors de la boucle.
Comme l'a un jour écrit michelbillaud, le nom d'une fonction dit ce qu'elle fait et elle doit faire ce qu'elle dit. Donc une fonction qui affiche, affiche et ne fait rien d'autre. Et une fonction qui initialise, initialise, point.
- Edité par edgarjacobs 22 janvier 2021 à 19:41:08
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Re j'ai fais exactement comme tu m'as expliquer mais le problème persiste, la grille est à chaque fois reset
Et quel est le nouveau code ? Rares ici sont les devins.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
SUDOKU PROBLEME
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent