Programme en c

clintm Messages postés 718 Statut Membre -  
ceddec Messages postés 149 Statut Membre -
salut,

j'ai encore un problème avec un petit prog:, normalement on devrait tapper le résultat "9", et sa devrait mettre correct, et sa met incorrect. si vous avez une idés, merci de m'aider @+?
#include <stdio.h>
#include <stdlib.h>

 main ()
 {
      int x;
      x = getc( stdin );
      if( 8 + 1 == x )              /*Si 8 + 11 = 9 alors afficher Correct*/
          printf("Correct", x);
      else                          /*Si 8 + 11 = (autre chose que 9) alors afficher InCorrect*/
          printf("InCorrect", x);
      getch();
}

--
------------------------------------------
>>Trop de paroles noient la vérité<<

5 réponses

  1. ceddec Messages postés 149 Statut Membre 82
     
    Bonjour,

    Je ne suis pas sur mais je crois que lorsque tu tapes 9 au clavier, le programme récupère la valeur ASCII du 9 ( c'est à dire 57 ). Ainsi, il est normal que le programme affiche incorrect.

    Pour parer à ce problème il faut enlever 48 à la valeur qui est lue au clavier.
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    C'est effectivement ça je pense. Utilise plutôt la commande scanf et ça ira beaucoup mieux ;)

    Bonne chance
    0
    1. clintm Messages postés 718 Statut Membre 75
       
      salut

      scanf a la place de quoi
      0
      1. ceddec Messages postés 149 Statut Membre 82 > clintm Messages postés 718 Statut Membre
         
        scanf est une autre commande pour lire au clavier
        tu remplace
        x = getc( stdin );
        par
        int x;
        scanf ("%d",&x);

        Ainsi la variable x est un entier, donc tu peux directement faire tes opérations dessus.

        Ton programme devient :

        #include <stdio.h>
        #include <stdlib.h>

        main ()
        {
        int x;
        scanf ("%d",&x);
        if( 8 + 1 == x )
        printf("Correct");
        else
        printf("InCorrect");
        }


        Il y a des explications sur scanf ici :
        http://www.cplusplus.com/ref/cstdio/scanf.html (anglais)
        http://membres.lycos.fr/dancel/c/c60_40.htm (français mais moins complet)
        0
  3. clintm Messages postés 718 Statut Membre 75
     
    salut,

    j'ai trouver la valeur de 9: je les copier/coller, mais ca marche pas

    #include <stdio.h>
    #include <stdlib.h>
    
     main ()
     {
          int x;
          printf("Voici le symbole de la valeur 9 : %c \n", x);
          x = getc( stdin );
          if( 8 + 1 == x )              /*Si 8 + 11 = 9 alors afficher Correct*/
              printf("Correct", x);
          else                          /*Si 8 + 11 = (autre chose que 9) alors afficher InCorrect*/
              printf("InCorrect", x);
          getch();
    }

    0
  4. ceddec Messages postés 149 Statut Membre 82
     
    Je reexplique:

    lorsque tu tapes 9 au clavier et que tu récupère l'information avec getc, pour le programme la valeur est 57 (la valeur décimale du code ascii correspondant au 9). Si tu tiens à utiliser getc il faut que tu enlèves 48 à la valeur saisie. Si tu tiens à voir par toi même la valeur lue, affiche là avec printf mais en utilisant %d car tu veux faire des opérations sur des entiers. Le source serait le suivant :

    #include <stdio.h>
    #include <stdlib.h>
    
     main ()
     {
          int x;
          printf("Voici le symbole de la valeur 9 : %d \n", x);
          x = getc( stdin );
          x = x -48;
          if( 8 + 1 == x )      
              printf("Correct");
          else                          
              printf("InCorrect");
    }


    L'autre solution est d'utiliser scanf à la place de getc qui lui fait l'opération tout seul. Tu peux lire directement un nombre au clavier en lui passant en premier paramètre %d . Le source deviendrait

    #include <stdio.h>
    #include <stdlib.h>
    
    main ()
    {
    int x;
    scanf ("%d",&x);
    if( 8 + 1 == x )
    printf("Correct");
    else
    printf("InCorrect");
    } 
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. magic charly Messages postés 122 Statut Membre 22
     
    Je pense que la seconde solution est plus élégante tout de meme :)
    0
    1. ceddec Messages postés 149 Statut Membre 82
       
      tout a fait d'accord
      0