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 :

Une aide merci


Sujet :

C

  1. #1
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut Une aide merci
    Bonjour,

    Je suis entrain de réaliser un programme qui d'après le choix de l' utilisateur choisit 2 entiers et un caractère (parmi +, -, x et: ).
    Le programme doit effectuer l’opération choisie par l'utilisateur.

    Si l’utilisateur n’a pas saisi de caractère correct, il faut afficher une erreur

    voici mon 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
     
     
    #include <stdio.h>
     
    void main (void) 
    {
    // déclaration variable
        int nombre1,nombre2;
    	char choix;
     
    //on demande à l'utilisateur 2 entiers 
    	printf("choisir deux entiers \n");
    	scanf("%d",&nombre1); /*lire l'entiers */
    	scanf("%d",&nombre2);
     
     //choix de l'opération par l'utilisateur
    	printf("===choix===\n");
    	printf(" + \n");
    	printf(" - \n");
    	printf(" * \n");
    	printf(" / \n");
    	scanf("%c",&choix);
     
     // pour chaque cas on effectue l'operation demandé par l'utilisateur      
     
     
    switch (choix)
    	{
            case 1	:	printf("Resultat : %d",nombre1+nombre2);
    				break; 
    	case 2	: 	printf("Resultat : %d",nombre1-nombre2;
    				break;
    	case 3	:	printf("Resultat : %d",nombre1*nombre2);
    				break;
    	case 4  :   printf("Resultat : %d",nombre1/nombre2);
                    break;
    	default	:	printf("erreur\n");
     
    	}
     
     
     
    }
    je peux lancer en console le test mais après avoir rentrées les 2 valeurs le menu choix s'affiche avec une erreur directement ?

    Je débute en C Merci de votre aide et remarque pour ne plus refaire les erreurs là à l'avenir.

  2. #2
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut case
    Bonjour

    Dans les cases il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    switch(choix)
    {
          case '1' : ....
          break;
          case '2' :
          break;
         ......
    }

  3. #3
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    Bizarre j'ai pourtant vue sans les '' par contre ça ne résout pas le problème il m'affiche toujours erreur ?

  4. #4
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    salut:
    il t'afiche quel type d'erreur ?

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gia,
    Citation Envoyé par Johnny P. Voir le message
    Bizarre j'ai pourtant vue sans les '' par contre ça ne résout pas le problème il m'affiche toujours erreur ?
    Vu ton code, je suppose que tu entres un des caractères +,-,* ou / pour choisir l'opération ?

    Ton switch doit donc tester ces caractères, et pas '1', '2' ...

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Johnny P. Voir le message
    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	case 2	: 	printf("Resultat : %d",nombre1-nombre2;
    Il manque une )

    main() retourne int. Toujours.

    Ensuite, tu as un problème de saisie. le scanf() laisse trainer un '\n' qui est pris directement par le 3 ème scanf(), sans s'arrêter.

    Le '\n' est donc pris comme une erreur.

    Il faut travailler à la sécurisation des saisies.

    Bricolage rapide :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void purge(void)
    {
        int c;
       while ((c = getchar()) != '\n' && c != EOF)
       {
       }
    }
    qu'il faut placer après chaque scanf() si le dernier caractère lu n'est pas `\n' :

    Dans le switch-case, 1 2 3 4 n'a aucun sens. C'est '+', '-' etc.

    Ne pas autoriser les divisions par 0.

    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
    57
    58
    59
    60
    61
    62
    63
     
    #include <stdio.h>
     
    void purge (void)
    {
       int c;
       while ((c = getchar ()) != '\n' && c != EOF)
       {
       }
    }
     
    int main (void)
    {
    /* déclaration variable */
       int nombre1, nombre2;
       char choix;
     
    /* on demande à l'utilisateur 2 entiers */
       printf ("choisir deux entiers \n");
       scanf ("%d", &nombre1);      /*lire l'entiers */
       purge ();
       scanf ("%d", &nombre2);
       purge ();
     
       /* choix de l'opération par l'utilisateur */
       printf ("===choix===\n");
       printf (" + \n");
       printf (" - \n");
       printf (" * \n");
       printf (" / \n");
       scanf ("%c", &choix);
       if (choix != '\n')
       {
          purge ();
       }
       /* pour chaque cas on effectue l'operation demandé par l'utilisateur */
     
       switch (choix)
       {
       case '+':
          printf ("%d %c %d = %d", nombre1, choix, nombre2, nombre1 + nombre2);
          break;
       case '-':
          printf ("%d %c %d = %d", nombre1, choix, nombre2, nombre1 - nombre2);
          break;
       case '*':
          printf ("%d %c %d = %d", nombre1, choix, nombre2, nombre1 * nombre2);
          break;
       case '/':
          if (nombre2 != 0)
          {
             printf ("%d %c %d : %d", nombre1, choix, nombre2, nombre1 / nombre2);
          }
          else
          {
             printf ("le denominateur doit etre <> 0\n");
          }
          break;
       default:
          printf ("erreur\n");
       }
       return 0;
    }

  7. #7
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    Citation Envoyé par droggo Voir le message
    Gia,

    Vu ton code, je suppose que tu entres un des caractères +,-,* ou / pour choisir l'opération ?

    Ton switch doit donc tester ces caractères, et pas '1', '2' ...

    Oui c'est exactement ça, j'ai pas fait attention!

  8. #8
    Membre très actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Par défaut
    merci de l'aide je viens de changer mais le problème continue après le choix de mes 2 valeurs il y a le menu de choix et en bas une erreur le programme quitte !

    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>
     
    void main (void) 
     
     
    {
     
    // déclaration variable
        int nombre1,nombre2;
    	char choix;
     
    //on demande à l'utilisateur 2 entiers 
    	printf("choisir deux entiers \n");
    	scanf("%d",&nombre1); /*lire l'entiers */
    	scanf("%d",&nombre2);
     
     //choix de l'opération par l'utilisateur
    	printf("==Choisir==\n");
    	printf(" + \n");
    	printf(" - \n");
    	printf(" * \n");
    	printf(" / \n");
    	scanf("%c",&choix);
     
     // pour chaque cas on effectue l'opération demandé par l'utilisateur      
     
     
    switch (choix)
    	{
        case '+'	:	printf("Resultat : %d",nombre1+nombre2);
    				break; 
    	case '-'	: 	printf("Resultat : %d",nombre1-nombre2);
    				break;
    	case '*'	:	printf("Resultat : %d",nombre1*nombre2);
    				break;
    	case '/'  :   printf("Resultat : %d",nombre1/nombre2);
                    break;
    	default	:	printf("erreur\n");
     
    	}
     
     
     
    }

Discussions similaires

  1. Réponses: 24
    Dernier message: 13/05/2014, 14h47
  2. Est-ce qu'il ya une Aide ???
    Par alma7i dans le forum C++
    Réponses: 2
    Dernier message: 14/09/2005, 17h12
  3. [Débutant(e)][Stratégie] Affichage d'une aide
    Par clairette dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 07/07/2005, 16h05
  4. une aide pour un cours de turbo a l'ecole
    Par master_letters dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 26/11/2003, 23h18
  5. Ajouter une aide
    Par Mailgifson dans le forum C++Builder
    Réponses: 5
    Dernier message: 12/06/2002, 13h32

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