Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C] mon pendu à moi

le pendu qui pends pas !!

Sujet résolu
    8 mars 2006 à 21:33:58

    Bonjour à tous !!


    J'ai un probleme dans ma plantation avec mon pendu voici mon code , je vous l'expliquerai par la suite


    #include <stdio.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    /***********************************/
    #include "dico.h"
    /***********************************/
    int nbrMotDico()
    {
        FILE* fichier = NULL;
        int nbr = 0;
        char varchar = 0;
        fichier = fopen("dico.txt""r");
        while(varchar != EOF)
        {
            varchar = fgetc(fichier);
            if(varchar == '\n')
            {
                nbr++;
            }
        }
        fclose(fichier);
        return nbr+1;
    }
    long nombreAleatoire(long nombreMax)
    {
        srand(time(NULL));
        return (rand() % nombreMax);
    }
    int setMotSecret(char *mot)
    {
        long random = nombreAleatoire(nbrMotDico()) ‚ i = 0‚ taille = 0;
        FILE* fichier = NULL;
        fichier = fopen("dico.txt""r");
        char varchar = 0;
        while(random > 0)
        {
            varchar = fgetc(fichier);
            if(varchar == '\n')
            {
                random––;
            }
        }
        fgets(mot‚100‚fichier);
        printf("%s"‚mot);
        taille = strlen(mot);
        mot[taille–1] = '\0';
        fclose(fichier);
        return taille;
    }



    Ca c'est mon code dico.c
    et voici les prototypes dans dico.h
    int setMotSecret(char *mot);
    /* cette fonction donne le mot secret et renvoie la taille du mot*/
    int nbrMotDico();
    /* cette fonction renvoie le nombre de mot dans le dico */
    long nombreAleatoire(long nombreMax);
    /* cette fonction renvoie la ligne du mot à choisir*/

    Enfin voila la méthode MAIN
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include "dico.h"
    //––––––––––––––––––––––––––––––//
    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
    }
    //––––––––––––––––––––––––––––––//
    int main(int argc‚ char *argv[])
    {
    char lettre = 0; // Stocke la lettre proposée par l'utilisateur (retour du scanf)
    char secret[100] = {0}; // C'est le mot à trouver
    int taille = setMotSecret(secret);
    int* lettreTrouvee = NULL;
    lettreTrouvee = malloc(taille * sizeof(int));
    long coupsRestants = 10; // Compteur de coups restants (0 = mort)
    int coups = 0;
    long i = 0; // Une petite variable pour parcourir les tableaux
    printf("Bienvenue au PenDu !! \nLes mots sont uniquement en majuscules et vous n'avez que 10 chances!\nA vous de jouer !\n");
    // message d'invitation !
    printf("Voici le mot : ");
    for(i=0;taille > 0;i++)
    {
    lettreTrouvee[ i] = '*';
    taille––;
    }
    printf("%s"‚lettreTrouvee);
    do
    {
    coups++;
    printf("\nDonnez une lettre : ");
    lettre = lireCaractere();

    if((strchr(secret ‚ lettre )) != NULL)
    {
    printf("BRAVO‚ vous avez trouve une lettre ! : ");
    for(i = 0; i < taille;i++)
    {
    if (lettre == secret[i ]) // Si la lettre y est
    {
    lettreTrouvee[ i] = lettre;
    }
    }
    }
    else
    {
    coupsRestants––;
    printf("DESOLE ‚ il ne vous reste que %ld ! : "‚coupsRestants);
    }
    printf("%s \n"‚lettreTrouvee);
    }while((strcmp(lettreTrouvee‚secret)) != 0 && coupsRestants != 0);
    if((strcmp(lettreTrouvee‚secret)) == 0)
    {
    printf("BRAVO‚ vous avez trouve le mot %s en %ld coups !\n"‚secret‚coups);
    }
    else if((strcmp(lettreTrouvee‚secret)) != 0 && coupsRestants == 0)
    {
    printf("RATE‚ vous avez perdu !\n ");
    }
    free(lettreTrouvee);
    system("PAUSE");
    return 0;
    }

    Ouf et ben , il y a tant de choses ...
    Alors ou en étais-je ? a oui ! Mon probleme

    • Le programme fonctionne correctement , la pas de probleme
    • jusqu'au moment ou il affiche le résultat
    • C'est à dire le mot dont certaine lettre sont masquées
    • La il y a un probleme , je n'arrive pas à l'affichier correctement

    S'il vous plait ? j'ai bossé dessus pendant 3 heures AIDEZ MOI !!

    PS : dans mon code , ne tenez pas compte genre des espaces en trop comme lettreTrouvee[ i] = lettre;
    • Partager sur Facebook
    • Partager sur Twitter
      8 mars 2006 à 21:52:32

      oui merci , et encore désolé pour le double post !
      • Partager sur Facebook
      • Partager sur Twitter
        9 mars 2006 à 19:39:51

        Ce serait cool d'indenter ton code aussi parce que sur un truc long comme ça...
        • Partager sur Facebook
        • Partager sur Twitter

        [C] mon pendu à moi

        × 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.
        • Editeur
        • Markdown