Pendu en C

Résolu
limbergh Messages postés 669 Statut Membre -  
oupsman Messages postés 319 Statut Membre -
Bonjour,

c'est juste une esquisse du pendu en c, après je l'amélorerai mais j'ai un problème dans mon code.
Quand je tape un mot, et que ensuite je choisi une lettre pour trouver le mot, le code
m'indique que ma lettre se trouve à toute les positions sauf la 0 et je ne comprnend pas
pourquoi. Soyez indulgent, je débute en C...

Merci d'avance pour vos interventions.

Benoît

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    char mot [5];
    char lettre;
    int i;
 
    scanf("%s", mot);
    printf("tapez une lettre : ");
    scanf("%s",&lettre);
    
    for (i=0;i<=5;i++)
    {
        if(lettre=mot[i])
        printf("la lettre  est a la position %d\n" ,i);
        else
        printf("pas bon\n");
    }
    system("PAUSE");
    return 0;
}
 
 
Configuration: Windows XP
Firefox 2.0.0.11

17 réponses

  1. cythonas Messages postés 618 Statut Membre 84
     
    for (i=0;i<=5;i++)
    {

    jconnai pas tres bien le C sa fait lontemp que j'en ai pas fait mais si tu met i++ sa veut dire qu'il increment i de +1 a chaque fois nan?

    if(lettre=mot[i])
    printf("la lettre est a la position %d\n" ,i); et la vu que ta variable c'est i en fait il prend chaque valeurs de i donc 1 2 3 4 donc il te met ta lettre partout kes ten dit??

    en fait tu lui dit pour i compris entre 0 et 5 tu met la lettre sa tourne pas rond ton truc jcroi
    0
  2. limbergh Messages postés 669 Statut Membre 140
     
    non,
    au début du code j'introduis un mot de six lettres, ensuite je chiosi une lettre
    et la compare avec le mot tapé.
    C'est la que ça m'indique que la lettre se trouve partout dans le mot
    sauf en position 0...

    Et je ne comprend toujours pas pourquoi!!!
    0
  3. cythonas Messages postés 618 Statut Membre 84
     
    ouais mais deja c pas normale que ta lettre se trouve partou si??
    0
  4. cythonas Messages postés 618 Statut Membre 84
     
    et il compte pas le 0 pasque de 0 a 5 sa fait 6 caractere jpense nan???essaye avec 6 a ton char mot
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. limbergh Messages postés 669 Statut Membre 140
     
    #define Tmax5

    c'est défini pour 6 caractères vu qu'il y a le 0 qui compte non?

    Donc tu n'as pas d'explications pourquoi ça plante?
    0
  7. limbergh Messages postés 669 Statut Membre 140
     
    je voulais pas dire ça, mot [5] défini 6 caractères quand même non?
    0
  8. oupsman Messages postés 319 Statut Membre 10
     
    Salut limbergh,

    Dans ta boucle for, dans if il faut mettre "==" et non "=".

    == signifie un test.

    = signifie affectation.

    donc si tu corriges ton code, ça doit marcher.

    CORRECTION :

    ....
    ...
    for (i=0;i<=5;i++)
    {
    if(lettre==mot[i])
    printf("la lettre est a la position %d\n" ,i);
    else
    printf("pas bon\n");
    }
    ...
    ...

    a+ ;-)
    0
  9. limbergh Messages postés 669 Statut Membre 140
     
    Salut oupsman,
    effectivement ça fonctionne mieux mais ce que je ne comprend pas c'est pourquoi
    la première lettre du mot tapé n'est jamais reconnue par la lettre introduite...
    Si tu as une explication à ça je suis preneur...

    Merci d'avance
    0
  10. limbergh Messages postés 669 Statut Membre 140
     
    Voilà, je pense que mon code est plus lisible...

    En fait quand j'introduis une lettre pour deviner le mot introduis avant, pex, le mot est "loulou", quand je vais sur la case 3
    et que j'introduis un "l" il m'indique en position 0, 1, 2, pas bon, 3 bonne piosition et en 4 et 5 pas bon.
    Pourquoi ça ne fonctionne pas pour la posiiton 0??????

    Merci d'avance

    Limbergh
    0
  11. limbergh Messages postés 669 Statut Membre 140
     
    j'avais oublié le code....
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
     int  choix, i;   
     char mot[5];
     char lc;
      do
      {
      printf("\n\n-1- choisissez un mot!!! : ");
      printf("\n-2- affichez le mot choisi!!! : ");
      printf("\n-3- tapez une lettre : ");
      printf("\n votre choix==============>");
      scanf("%d", &choix);
      
      switch(choix)
      {
      case 1 :
           printf("introduisez un mot de 6 caracteres : ");
           scanf("%s", &mot);
           break;
      
      case 2 :
           printf("\n\nle mot choisi est : %s" , mot);
           break;
           
      case 3 :
           printf("\n introduisez une lettre : ");
           scanf("%s", &lc);
           for (i=0;i<=5;i++)
           {
           if (lc==mot[i])
           printf("\n la lettre est a la position %d : ", i);
           else 
           printf("\n pas bon");
           }
           break;
                       
                   
                   
                   
      }
                   
    }while(choix!=0);
      system("PAUSE");	
      return 0;
    }
    
    0
  12. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    rajoute un getchar(); apres scanf("%d", &choix); pour recupéré \n
    0
  13. oupsman Messages postés 319 Statut Membre 10
     
    essayes avec ça :

    int main(void)
    {
    char mot[5];
    char lettre;
    int i;

    scanf("%s", mot);
    printf("tapez une lettre : ");
    scanf(" %c",&lettre); /*ICI J'AI RAJOUTE UN ESPACE AVANT %c*/
    /*et li tiens était aussi un %s que j'ai remplacé*/

    for (i=0;i<5;i++)
    {
    if(lettre==mot[i])
    printf("la lettre est a la position %d\n" ,i);
    else
    printf("pas bon\n");
    }
    system("PAUSE");
    return 0;
    }

    normalement ça doit faire ce que tu voulais a + ;-)
    0
  14. limbergh Messages postés 669 Statut Membre 140
     
    Salut mype,

    j'ai fait ce quu tu m'as suggéré et mon problème persiste... De plus, je ne comprend pas
    pourquoi il faut rajouter getchar();...
    0
    1. oupsman Messages postés 319 Statut Membre 10
       
      Essayes mon post 12, c'est plus simple
      0
      1. oupsman Messages postés 319 Statut Membre 10 > oupsman Messages postés 319 Statut Membre
         
        et tiens moi au courant ;-)
        0
  15. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    la letre est un seul caractere donc tu remplace %s par %c là scanf("%c", &lc);
    rajoute un autre getchar(); apres scanf("%c", &lc);

    quand tu tape ton choix ou ta lettre apres tu appuies sur entree donc il te faut un getchar pour recupere le caractere \n qui correspond a la touche entree

    essaye ça la ça devrait marché
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
     int  choix, i;
     char mot[5];
     char lc;
      do
      {
      printf("\n\n-1- choisissez un mot!!! : ");
      printf("\n-2- affichez le mot choisi!!! : ");
      printf("\n-3- tapez une lettre : ");
      printf("\n votre choix==============>");
      scanf("%d", &choix);
        getchar();
      switch(choix)
      {
      case 1 :
           printf("introduisez un mot de 6 caracteres : ");
           scanf("%s", &mot);
           break;
    
      case 2 :
           printf("\n\nle mot choisi est : %s" , mot);
           break;
    
      case 3 :
           printf("\n introduisez une lettre : ");
           scanf("%c", &lc);
            getchar();
           for (i=0;i<=5;i++)
           {
           if (lc==mot[i])
           printf("\n la lettre est a la position %d : ", i);
           else
           printf("\n pas bon");
           }
           break;
    
    
    
    
      }
    
    }while(choix!=0);
      system("PAUSE");
      return 0;
    }
    
    0
  16. limbergh Messages postés 669 Statut Membre 140
     
    Merci pour vos réponses (oupsman et mype)...
    0
  17. mype Messages postés 2459 Date d'inscription   Statut Membre Dernière intervention   437
     
    de rien ;)
    0
  18. oupsman Messages postés 319 Statut Membre 10
     
    ravi d'avoir pu t'aider, a+ ;-)
    0