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 :

Jeu du Pendu (Problèmes que je n'arrive pas a résoudre)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    .
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut Jeu du Pendu (Problèmes que je n'arrive pas a résoudre)
    Bonjour,

    Je suis entrain de programmer le Jeu du Pendu et j'ai un problème que je n'arrive pas à résoudre.

    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
    35
    36
    37
    38
     
     
    #ifndef CARACTERE_H_INCLUDED
    #define CARACTERE_H_INCLUDED
     
    char LireCaractere()
    {
        char caractere = 0;
     
        caractere = getchar(); /*On lit le premier caractère*/
        caractere = toupper(caractere); /*On met la lettre en majuscule si elle ne l'est pas déjà*/
     
        /*On lit les autres caractères mémorisés un à un jusqu'à l'\n (pour les effacer)*/
        while (getchar() != '\n') ;
     
        return caractere; /*On retourne le premier caractère qu'on a lu*/
     
    }
     
    char RemplaceCaractere(char mot_secret[], char trouve[], char caractere, int i, int long_mot)
    {
        int j=0;
     
        for(j=0;j<long_mot;j++)
        {
            if((j<i) || (j>i))
            {
                if(trouve[j]!=mot_secret[j]) /* Si on a trouve une lettre on ne le remplace pas par une * */
                    trouve[j]='*';
            }
            else
                trouve[i]=caractere;
        }
     
        return trouve[i];
    }
     
    #endif // CARACTERE_H_INCLUDED
    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
    35
    36
    37
    38
    39
    40
    41
    42
     
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <ctype.h>
    #include "caractere.h"
     
    int main()
    {
        char mot_secret[]="MARSEILLE";
        char *trouve;
        char caractere="";
        int long_mot=strlen(mot_secret);
        int i=0;
        trouve=malloc(long_mot*sizeof(char));
     
        printf("                      ********************************\n");
        printf("                      **********JEU DU PENDU**********\n");
        printf("                      ********************************\n\n\n");
     
        for(i=0;i<long_mot;i++)
            trouve[i]='*';
     
        do
        {
            printf("Quelle est le mot secret? : %s \n",trouve);
            printf("Proposez une lettre: ");
            caractere=LireCaractere();
            for(i=0;i<long_mot;i++)
            {
                if(caractere==mot_secret[i])
                    trouve[i]=RemplaceCaractere(mot_secret, trouve, caractere, i, long_mot);
            }
            printf("%s\n\n",trouve);
     
        }
        while(strcmp(trouve,mot_secret)!=0);
     
     
        return 0;
    }

    Mon problème c'est que si le mot secret a une a un nombre de caractères différents de 3 , 5 ou 7
    j'ai par exemple pour le mot MARRON ( 6 caractères) ******µ(pas forcement µ), pour MARSEILLE(9 caractères) *********HDK£µ(pas forcement ces caractères)

    Pouvez-vous m'aider?

    Merci d'avance

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

    Je pense qu'il manque un caractère '\0' à la fin de trouve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        char mot_secret[]="MARSEILLE";
        char *trouve;
        char caractere;
        int long_mot=strlen(mot_secret);
        int i=0;
     
        trouve=malloc(long_mot+1)man calloc;
        trouve[long_mot] = '\0';
     
        /* ou mieux : */
     
        trouve = calloc(long_mot + 1, sizeof(char));
    EDIT :
    Attention, j'ai l'impression que tu code les fonctions LireCaractere et RemplaceCaractere directement dans un fichier header (.h). Cette méthode est plutôt à éviter.
    Il faut mieux avoir un fichier d'implémentation (.c) dans lequel tu définis les fonction :
    Code toto.c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void fonction(void) {
        printf("bonjour depuis fonction\n");
    }
    et un fichier d'entête (.h) dans lequel tu déclares cette fonction :

    Code toto.h : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #ifndef H_GUARD
    #define H_GUARD
    void fonction(void);
    #endif

  3. #3
    Membre averti
    Homme Profil pro
    .
    Inscrit en
    Novembre 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2009
    Messages : 13
    Par défaut
    merci il fallait juste mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trouve[long_mot] = '\0';
    pas besoin de mettre le +1

Discussions similaires

  1. Réponses: 14
    Dernier message: 04/12/2010, 00h23
  2. Problème que je n'arrive pas a résoudre
    Par mthoumy dans le forum Débuter
    Réponses: 11
    Dernier message: 24/05/2010, 06h48
  3. Problèmes que je n'arrive pas à identifier
    Par User Name dans le forum Débuter
    Réponses: 13
    Dernier message: 26/12/2007, 18h26
  4. Réponses: 7
    Dernier message: 07/01/2007, 12h16
  5. problème que je n'arrive pas à résoudre de façon récursive
    Par miam dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 31/07/2004, 11h21

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