IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Sudoku avec fichier


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut Sudoku avec fichier
    Bonjour a tous,

    Etand actuellement en étude d'informatique j'aurais besoin d'aide pour faire mon projet programmation.

    Donc je dois résoudre une grille de sudoku de differente difficulté ( facile, moyen, difficile )

    La grille doivent etre déja ranger dans un fichier, l'utilisateur ne doit pas taper la grille, il dois juste choisir son niveau de difficulté puis une grille apparait, il dois aussi pouvoir voir la correction de cette grille.

    Donc je dois faire appel a un fichier pour qu'il m'affiche une grille de sudoku.

    Merci de votre aide

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Quel est précisément le problème sur lequel tu butes ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Bonjour,

    le problème est pour choisir la difficulté du sudoku,

    Car mettre une grille dans le fichier pas de problème, mais pour que le programme trouve lequel prendre en fonction de la difficulté choisi par l'utilisateur je ne vois pas comment faire.

    Merci pour ton aide.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    Le plus simple est de créer un fichier par grille (genre « facile.dat », « medium.dat », « difficile.dat »), d'interroger l'utilisateur sur la difficulté qu'il souhaite et enfin d'ouvrir le bon fichier en conséquence.

    Ensuite le programme se poursuit comme si de rien n'était.

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 969
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 969
    Par défaut
    Xia,
    Citation Envoyé par Obsidian Voir le message
    Le plus simple est de créer un fichier par grille (genre « facile.dat », « medium.dat », « difficile.dat »), d'interroger l'utilisateur sur la difficulté qu'il souhaite et enfin d'ouvrir le bon fichier en conséquence.

    Ensuite le programme se poursuit comme si de rien n'était.
    Personnellement, j'inclurais le niveau DANS le fichier (se méfier du renommage !).

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 495
    Par défaut
    Citation Envoyé par droggo Voir le message
    Personnellement, j'inclurais le niveau DANS le fichier (se méfier du renommage !).
    C'est ce que je ferais aussi, mais comme c'est un projet pour débutant, je trouve qu'un fichier par niveau est à la fois le plus facile et le plus clair…

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Merci de votre aide, je pense faire comme ca alors avec 3 fichier différents.

    Si j'ai encore besoin d'aide pour mon projet je reviens posté ici.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Bonjour,

    J'ai crée un fichier .dat contenant une grille non remplie de sudoku.

    Pour l'instant je veux juste lire cette grille est l'afficher, mais il ne m'affiche pas les 0 lorsque le ligne commence 00.

    Exemple : 0008504698 il m'affiche 8504698

    Voici mon code :

    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
    #include<stdio.h>
    #include <stdio.h>
     
     
    int lire_fichier(char*nf, int t1[])
    { int i; FILE*f;  f = fopen(nf,"r");
                                 for (i=0; i<9; i++)
                                        fscanf( f, "%d",&t1[i]);                            
                                fclose(f); 
                                return 9; 
          }
     
    main()
     
    { int m,k,t1[9];
          m=lire_fichier("grille_facile.dat",t1);
         for(k=0;k<9;k++)       
         printf("%d \n",t1[k]);
     }
    Merci pour votre aide

  9. #9
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Pour afficher les zéro au début d'un nombre, il faut utiliser %0Nd :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%09d \n",t1[k]);

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Ah, merci sa marche.

    Donc j'ai bien la grille qui s'affiche.

    Mais je dois faire en sorte que sa resemble a une grille de sudoku et non pas a une suite de nombre.

    Une idée ? car si je ne m'est autre chose que des nombre dans le fichier il bug

  11. #11
    Invité(e)
    Invité(e)
    Par défaut
    Mais je dois faire en sorte que sa resemble a une grille de sudoku et non pas a une suite de nombre.

    Une idée ? car si je ne m'est autre chose que des nombre dans le fichier il bug
    lire le fichier en mode texte avec fgets ? exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    FILE *f = ...;
    if(NULL != f) {
        char buf[256]
        while(NULL != fgets(buf, sizeof buf, f) {
            printf(buf);
        }
        fclose(f);
    }

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    ok, merci sa marche impeccable.

    Juste une petite question a quoi sert la chaine buf?

  13. #13
    Invité(e)
    Invité(e)
    Par défaut
    fgets permet de lire une ligne depuis un fichier. Il faut stocker cette ligne quelque part.

    On peut trouver plus d'info dans les pages man : man fgets.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Bonjour,

    Merci pour les precision,

    Maintenant je le programme dois pouvoir résoudre le sudoku, mais pour cela je dois comparais les valeur entre elles.

    Mais comment faire ? car je n'est pas de tableau rien.

  15. #15
    Invité(e)
    Invité(e)
    Par défaut
    SI tu peux lire le contenu du fichier, tu peux facilement remplir un tableau :

    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
    int grille [9][9];
    FILE *f = ...;
    if(NULL != f) {
        int ligne = 0;
        char buf[256]
        while(NULL != fgets(buf, sizeof buf, f) {
            printf(buf);
            if(ligne < 9) {
                for(int colonne = 0; colonne < 9; ++colonne) {
                    if(isnum(buf[colonne]) {
                        grille[ligne][colonne] = buf[colonne] - '0';
                    } else {
                        grille[ligne][colonne] = -1;                    
                    }
                }
            ++ligne;
            }
        }
        fclose(f);
    }

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Bonjour,

    Désolé pour le retard, apparament je me suis trompé dans le sujet.

    L'interface graphique ne dois pas se faire dans le fichier directement.

    Dans le fichier il dois juste avoir une suite de nombre ( 9 chiffre sur 9 ligne )


    Donc j'ai refais mon codage, le voici :

    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
    #include<stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
     
     
    typedef int tableau [9][9];
     
    void lire_fichier( char *nf, tableau t1)        
         {  int i,j;
     
           FILE*f;  f = fopen(nf,"r"); 
               for (i=0; i=8; i++)
                    for (j=0; j=8; j++)
                     fscanf( f, "%d",&t1[i][j]);
             fclose(f); 
    }
     
    void afficher(tableau t1)
    { int i,j; 
     
                for (i=0; i=8; i++)
                    for (j=0; j=8; j++)
    { scanf("%d",&t1[i][j]);
     printf("%d",t1[i][j]); 
    }
    printf("\n");
    }               
     
    main()
    {tableau t1;
    lire_fichier("vide1.dat",t1);
    afficher(t1);
     }
    Mais lors de la compilation, aucun problème, mais quand je lance le programme il ne m'afficher rien, je dois faire ctrl+c pour l'arrête.

    Depuis hier je cherche le problème mais impossible de le trouver.

    ps: Désolé je ne sais pas comment faire pour bien insérer mon code.

  17. #17
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (i=0; i=8; i++)
    for (j=0; j=8; j++)
    Il n'y a rien qui te choque dans ces deux lignes ?

    EDIT :
    ps: Désolé je ne sais pas comment faire pour bien insérer mon code.
    --> http://club.developpez.com/regles/#L3.5

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Oh oui,

    J'ai changer :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void lire_fichier( char *nf, tableau t1)        
         {  int i,j;       
           FILE*f;  f = fopen(nf,"r"); 
               for (i=0; i<9; i++)
                    for (j=0; j<9; j++)
                     fscanf( f, "%d",&t1[i][j]);
             fclose(f); 
         }
    J'ai déjà avancer, le programme s'arrête tous seul.

    Merci

  19. #19
    Invité(e)
    Invité(e)
    Par défaut
    La fonction afficher aussi est à revoir, il y a le même problème de condition dans la boucle for et un scanf qui traine...

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Par défaut
    Oui, javais déjà rectifier.

    Mais je n'est toujours rien qui s'affiche.

    EDIT : J'ai réussi a afficher le résultat, mais a la fin de mon fichier il m'affiche encore une liste de nombre

Discussions similaires

  1. Mettre a jour BD avec fichier csv
    Par Looping94510 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 07/02/2005, 18h56
  2. Erreur avec fichier .manifest
    Par engi dans le forum Windows
    Réponses: 2
    Dernier message: 16/11/2004, 14h58
  3. [Eclipe 2.1.1]Projet avec fichiers sources existants
    Par mfofana dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 26/02/2004, 05h20
  4. Problème avec fichier texte
    Par jpdelx dans le forum ASP
    Réponses: 7
    Dernier message: 13/11/2003, 13h17
  5. Réponses: 4
    Dernier message: 25/08/2003, 09h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo