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 :

Problème d'affichage du résultat


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut Problème d'affichage du résultat
    Bonjour;
    J'ai fait un petit programme de calcul. Le résultat du calcul n'apparaît pas.
    Quelle est l'erreur?
    Merci.


    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
     
    #include <stdio.h>
    main ()
    { 
    int a, b, result ;
    char signe ;
    printf ("Entrez deux entiers : ") ;
    scanf ("%d %d", &a, &b) ;
    printf ("Operation (*,+ ou -) : ") ;
    scanf ("%c\n", &signe) ;    
    switch (signe)
     {
    case '*': 
        result = a * b ;
        printf ("Resultat : %d\n", result) ;
        break ;
    case '+': 
        result = a + b ;
        printf ("Resultat : %d\n", result) ;
        break ;
    case '-': 
        result = a - b ;
        printf ("Resultat : %d\n", result) ;
        break ;
    default : printf ("Operation impossible.\n") ;
        break ;
     }
    }

  2. #2
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    L'erreur c'est que tu as saisie comme signe le caractére '('

    Me trompe-je ?

    Le code n'a pas l'air plus mauvais que cela (si ced n'est le \n dans la saisie du signe->vire le de ton scanf) qu'est-ce qui se passe tu peux détailler ?
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  3. #3
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut
    Non je n'ai pas saisi ce caractère ')'.

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Moi j'aurais plutôt fait comme ceci (ton code un peu revu):
    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
    43
    44
    45
     
    #include <stdio.h>
     
     
    int main (void)
    {
       int a, b, result ;
       char signe ;
     
     
       printf ("Entrez l'operation : ") ;
       scanf ("%d %c %d", &a, &signe, &b) ;
     
     
       switch (signe)
       {
          case '*':
          {
             result = a * b ;
             printf ("Resultat : %d\n", result) ;
          }
          break ;
     
          case '+':
          {
             result = a + b ;
             printf ("Resultat : %d\n", result) ;
          }
          break ;
     
          case '-':
          {
             result = a - b ;
             printf ("Resultat : %d\n", result) ;
          }
          break ;
     
          default :
             printf ("Operation impossible.\n") ;
             break ;
       }
     
     
       return 0;
    }
    Sortie console:
    Entrez l'operation : 2 + 5
    signe = +
    Resultat : 7
    Il ne faut pas oublier que main retourne également toujours un int et que les signatures autorisées par la norme sont au choix:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    int main (void)
    int main (int argc, char ** argv)
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    Citation Envoyé par cirtey
    Non je n'ai pas saisi ce caractère ')'.

    Non mais d'accord mais tu peux essayer de détailler un peu plus le comportement de ton programme...
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Il doit surement y avoir des caractères parasites comme le retour chariot par exemple quand on appui sur la touche Entrée. Essaye de vider le buffer clavier si tu veux rester avec ta version du code !

    Il faut le faire après chaque scanf et ca passe impec, je viens de tester


    Voici ce que ca donne avec ta version du 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    #include <stdio.h>
     
     
    static void clear_keyb_buffer (void)
    {
       int c;
       while ((c = getchar()) != '\n' && c != EOF); /* mange le tampon */
    }
     
     
    int main (void)
    {
       int a, b, result ;
       char signe ;
     
     
       printf ("Entrez deux entiers : ") ;
       scanf ("%d %d", &a, &b) ;
       clear_keyb_buffer();
     
       printf ("Operation (*,+ ou -) : ") ;
       scanf ("%c", &signe) ;
       clear_keyb_buffer ();
     
     
       switch (signe)
       {
          case '*':
          {
             result = a * b ;
             printf ("Resultat : %d\n", result) ;
          }
          break ;
     
          case '+':
          {
             result = a + b ;
             printf ("Resultat : %d\n", result) ;
          }
          break ;
     
          case '-':
          {
             result = a - b ;
             printf ("Resultat : %d\n", result) ;
          }
          break ;
     
          default :
             printf ("Operation impossible.\n") ;
             break ;
       }
     
     
       return 0;
    }
    Au plaisir
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Membre actif
    Inscrit en
    Décembre 2006
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 205
    Points : 240
    Points
    240
    Par défaut
    Impec, ça marche . Je ferai gaffe aux retous chariot.
    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Problème à l'affichage du résultat de la requête
    Par kek's dans le forum Access
    Réponses: 12
    Dernier message: 23/09/2011, 21h46
  2. Problème d'affichage de résultat
    Par tunis71187 dans le forum Reports
    Réponses: 2
    Dernier message: 21/02/2011, 08h55
  3. [MySQL] Petit problème d'affichage de résultats
    Par lukyVJ dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/01/2011, 11h24
  4. [PHP 4] Problème d'affichage de résultat
    Par fraisa1985 dans le forum Langage
    Réponses: 1
    Dernier message: 15/06/2009, 19h16
  5. problème d'affichage du résultat dans une classe qui utilise SNMP
    Par ramzouni dans le forum Débuter avec Java
    Réponses: 0
    Dernier message: 22/05/2009, 01h26

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