Language C: basique :sudoku 9*9 [Résolu] - C

Language C: basique :sudoku 9*9 [sudoku] Résolution d'une grille 9*9 en java » Forum - Java Tubemate 2.2.9 telecharger » Télécharger - Convertisseur Youtube TubeMate Youtube Downloader pour Android et PC » Guide Tubemate 2.2.9 telecharger » Télécharger - Convertisseur Youtube Internet explorer 9 » Télécharger - Navigateur

Bonsoir à tous, je cherche à faire un sudoku en language C pour un projet scolaire. Mon programme est presque finit mais je rencontre un problème lors de la définition de mon tableau (en toute fin de programme). Lors de l'exécution je n'arrive pas à afficher mes données dans le tableau et la demande de données est donc sans fin.
Je vous met le programme ci-dessous si quelqu'un a le courage de me faire remarquer mon erreur ou de me proposer une amélioration
Merci d'avance

#include <stdlib.h> #include <stdio.h> #include <stdbool.h> // Fonction d'affichage void affichage (int sudoku[9][9]) {     int i,j;     for(i=0; i<9; i++)     {         for(j=0; j<9; j++)         {             printf( ((j+1)%3) ? "%d " : "%d|", sudoku[i][j]);         }         putchar('\n');         if (!((i+1)%3))             puts("------------------");     }     puts("\n\n\n"); }  bool VerifieLigne (int k, int sudoku[9][9], int i) {     int j;     for (j=0; j < 9; j++)         if (sudoku[i][j] == k)             return false;     return true; }  bool VerifieColonne (int k, int sudoku[9][9], int j) {     int i;     for (i=0; i < 9; i++)         if (sudoku[i][j] == k)             return false;     return true; }  bool VerifieBloc (int k, int sudoku[9][9], int i, int j) {     int _i = i-(i%3), _j = j-(j%3);     for (i=_i; i < _i+3; i++)         for (j=_j; j < _j+3; j++)             if (sudoku[i][j] == k)                 return false;     return true; }  bool Valide (int sudoku[9][9], int position) {     int i,k,j;     if (position == 9*9)         return true;      i= position/9, j = position%9;      if (sudoku[i][j] != 0)         return Valide(sudoku, position+1);      for (k=1; k <= 9; k++)     {         if (VerifieLigne(k,sudoku,i) && VerifieColonne(k,sudoku,j) && VerifieBloc(k,sudoku,i,j))         {             sudoku[i][j] = k;              if ( Valide (sudoku, position+1) )                 return true;         }     }     sudoku[i][j] = 0;      return false; }  int main (void) {     int sudoku[9][9],i,j,a;     //INITIALISATION DU TABLEAU     for(i=0; i<=4-1; i++)     {         for(j=0; j<=4-1; j++)         {             sudoku[i][j]=0;         }     }     //DEMANDE DES DONNEES do     {         printf("Entrer les coordonnees de la case voulue\n");         printf("Entrer la ligne de la case voulue\n");         scanf("%d,&x");         printf("Entrer la colonne de la case voulue\n");         scanf("%d,&y");         printf("Entrer la valeur de la case voulue\n");         scanf("%d,&sudoku[x][y]");         printf("Tant que vous souhaiter entrer des valeurs tapez 1 sinon tapez 0 pour commencer le jeu\n");         scanf("%d,&a");     } while(a=1);       Valide(sudoku,0);      printf("Grille du Sudoku\n");     affichage(sudoku);     return 0; }


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

Forum

Language C: basique :sudoku 9*9 [sudoku] Résolution d'une grille 9*9 en java » Forum - Java Tubemate 2.2.9 telecharger » Télécharger - Convertisseur Youtube TubeMate Youtube Downloader pour Android et PC » Guide Tubemate 2.2.9 telecharger » Télécharger - Convertisseur Youtube Internet explorer 9 » Télécharger - Navigateur

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Lignes 79 à 85, tu n'initialises qu'une partie de la grille au lieu de toute la grille.
Ligne 99, au lieu de tester si a vaut bien 1, tu écris la valeur 1 dans a. C'est ton erreur et le compilateur a dû te le signaler par un beau warning!
Ligne 101, tu appelles une fonction assez complexe, mais tu ignores complètement son résultat, alors pourquoi l'appeler?

Reply
réponses:
  • MIchelSardoche

    Bonjour et merci pour tes correction j'ai corrigé tes deux premières remarques. Ligne 101 j'utilise cette fonction pour qu'elle résolve ma grille avec les données que j'ai entré précédemment. En fait je ne m'intéresse pas directement à ce qu'elle renvoie mais aux modifications qu'elle fait sur ma grille pour que je puisse afficher mon sudoku résolu ensuite.

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed