Help,,sudoku!!
Fermé
crénios
Messages postés
1
Date d'inscription
vendredi 12 décembre 2008
Statut
Membre
Dernière intervention
12 décembre 2008
-
12 déc. 2008 à 00:31
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 12 déc. 2008 à 01:04
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 12 déc. 2008 à 01:04
A voir également:
- Help,,sudoku!!
- Sudoku gratuit à télécharger - Télécharger - Puzzle & Réflexion
- Sudoku gratuit télécharger - Télécharger - Jeux vidéo
- Sudoku en c - Forum C++
- Comment créer un sudoku sur excel ✓ - Forum Internet / Réseaux sociaux
- Programme sudoku - Forum Programmation
1 réponse
mamiemando
Messages postés
32298
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
23 mars 2023
7 575
12 déc. 2008 à 01:02
12 déc. 2008 à 01:02
Pour écrire un programme il faut raisonner en plusieurs étapes
1) Modéliser ce que tu veux faire :
a) Au niveau des variables :
- un quadrillage mat capable de stocker chaque chiffre placé (matrice 9x9 d'entiers dans {1,...,9})
- un quadrillage eff capable d'indiquer si un chiffre est effaçable ou pas (matrice de 9x9 de booléens, par exemple eff[x][y] ==1 si on peut modifier la case (x,y), 0 sinon)
b) Au niveau des entrées (ce que l'utilisateur va gérer) :
- les coordonnées (x,y) de la case à modifier (couple à valeur dans {0,...8} car les tableaux se numérotent à partir de [0] en langage C)
- la valeur à mettre val (valeur dans 0...9 ou 0 signifie que l'utilisateur veut effacer un chiffre par exemple)
c) Au niveau des sorties (quel résultat va calculer le programme)
- est ce que la partie est finie ou non
2) Ensuite il faut réfléchir à comment maintenir intègre ces variables, ce qui sous-entend de vérifier que quand l'utilisateur saisit un chiffre
- les coordonnées (x,y) sont correctes : x < 9 && y < 9 && x >= 0 && y >= 0
- la valeur v est correcte : eff[x][y] == 1 && v >=0 && v <= 0
- vérifie que v n'entre pas en contradiction avec les valeurs déjà saisie (il va falloir écrire des boucles for pour vérifier les lignes, colonnes, et carrés de mat dans une fonction)
- une fois le chiffre inséré, vérifie qu'il reste des cases vides (à 0), sinon c'est que le joueur à gagné.
3) Écrire la structure du programme :
Maintenant à toi de boucher les trous ;-)
Bonne chance
1) Modéliser ce que tu veux faire :
a) Au niveau des variables :
- un quadrillage mat capable de stocker chaque chiffre placé (matrice 9x9 d'entiers dans {1,...,9})
- un quadrillage eff capable d'indiquer si un chiffre est effaçable ou pas (matrice de 9x9 de booléens, par exemple eff[x][y] ==1 si on peut modifier la case (x,y), 0 sinon)
b) Au niveau des entrées (ce que l'utilisateur va gérer) :
- les coordonnées (x,y) de la case à modifier (couple à valeur dans {0,...8} car les tableaux se numérotent à partir de [0] en langage C)
- la valeur à mettre val (valeur dans 0...9 ou 0 signifie que l'utilisateur veut effacer un chiffre par exemple)
c) Au niveau des sorties (quel résultat va calculer le programme)
- est ce que la partie est finie ou non
2) Ensuite il faut réfléchir à comment maintenir intègre ces variables, ce qui sous-entend de vérifier que quand l'utilisateur saisit un chiffre
- les coordonnées (x,y) sont correctes : x < 9 && y < 9 && x >= 0 && y >= 0
- la valeur v est correcte : eff[x][y] == 1 && v >=0 && v <= 0
- vérifie que v n'entre pas en contradiction avec les valeurs déjà saisie (il va falloir écrire des boucles for pour vérifier les lignes, colonnes, et carrés de mat dans une fonction)
- une fois le chiffre inséré, vérifie qu'il reste des cases vides (à 0), sinon c'est que le joueur à gagné.
3) Écrire la structure du programme :
#include <stdio.h>
#include <stdlib.h>
// Initialiser les grilles mat et eff
void init_grille(unsigned **mat,unsigned **eff){
//...
}
// Tester si v peut être insérer en x,y
// retourne 1 si v peut être insérée en (x,y) 0 sinon
int verifier_grille(const unsigned **mat, const unsigned **eff,unsigned x,unsigned y,unsigned v){
//...
}
// Tester si la grille est remplie
int grille_terminee(const unsigned **mat){
//..
}
// Afficher la grille
void afficher_grille(const unsigned **mat){
//...
}
int main(){
unsigned x,y,v;
unsigned **mat, **eff;
// Allouer mat et eff
while(!grille_terminee(mat)){
afficher_grille(mat);
do{
// Demander x,y,v
scanf("%i",&x);
scanf("%i",&y);
scanf("%i",&v);
}while(! verifier_grille(mat,eff,x,y,v));
mat[x][y] = v;
}
// Desallouer mat et eff
return 0;
}
Maintenant à toi de boucher les trous ;-)
Bonne chance
12 déc. 2008 à 01:04