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 :

Programme en langage C d'une calculatrice


Sujet :

C

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Avril 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2021
    Messages : 1
    Par défaut Programme en langage C d'une calculatrice
    Bonjour à tous,
    Je suis débutante dans le langage C et j'ai essayé un programme de calculatrice. L'addition, la soustraction, la division fonctionne.
    Sauf que, quand je lui demande de faire une multiplication, il me l'affiche comme une soustraction. Problème que je n'arrive pas à résoudre,
    merci de bien vouloir m'aider. J'ai mis le programme en pièce jointe si vous voulez y jeter un coup d'œil.
    Cordialement.

    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
    #include <stdio.h>
     
    int main() {
        int nombre1,nombre2;
        char choix;
     
        printf("DONNER LE PREMIER NOMBRE : ");
        scanf("%d",&nombre1);
        getc(stdin);
        printf("DONNER L'OPERATEUR :");
        scanf("%c",&choix);
        printf("DONNER LE DEUXEME NOMBRE : ");
        scanf("%d",&nombre2);
        }
     
        switch(choix) {
        case '+' :
        printf("%d + %d = %d\n",nombre1,nombre2,nombre1 + nombre2);
     
        break;
     
        switch(choix) 
        case '-' :
        printf("%d - %d = %d\n",nombre1,nombre2,nombre1 - nombre2);
     
        break;
     
     
        case '*' :
        printf("%d * %d = %d\n",nombre1,nombre2,(double) nombre1 * nombre2);
     
        break;
     
    }
     
        switch(choix) {
        case '/' :
        if(nombre2 != 0)
        printf("%d / %d = %.4f\n",nombre1,nombre2,(float) nombre1 / nombre2);
     
        else;
     
        printf("Math Error : impossible de diviser par 0\n");
     
        break;
     
        default : printf("OPERATEUR INCONNUE\n");
     
        return 0;
    }

  2. #2
    Membre chevronné
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2015
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Septembre 2015
    Messages : 213
    Par défaut
    bonjour

    comment peux tu dire que la multiplication ne fonctionne pas alors que ton code ne compile pas ?

    peux tu corriger ton code afin que le compilateur ne génère plus d'erreurs ?

  3. #3
    Membre émérite
    Avatar de Daïmanu
    Homme Profil pro
    Développeur touche à tout
    Inscrit en
    Janvier 2011
    Messages
    735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur touche à tout

    Informations forums :
    Inscription : Janvier 2011
    Messages : 735
    Par défaut
    Bonjour, bienvenue sur le forum

    Pour compléter le précédent message :
    • Ligne 14 : il y a une accolade fermante en trop
    • Ligne 9 : à quoi sert le getc() ?
    • Tu répètes plusieurs fois switch(choix), une seule fois suffit
    • Dans la multiplication il y a un cast (double), mais tu affiches un nombre entier (%d) dans le printf
    • Attention au point-virgule ligne 41 else;

  4. #4
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Pour que ton code compile, il faut déplacer l'accolade fermante de la line 14 vers la ligne 48.

    Pour tes switch, tu n'as pas bien compris l'utilisation. En particulier le second qui n'a pas d'accolade ouvrante, un seul suffit avec tes 5 cas possibles.

    Pour le getc(stdin); c'est tu as probablement utilisé une "astuce" vue sur un forum pour que ton scanf("%c") fonctionne, et cela marche souvent. Il ne faut pas lire ce qu'il se dit sur les forums Du moins, il faut le comprendre. Je t'en propose une autre à la place. Ote la line getc(stdin); et remplace la ligne scanf("%c",&choix); par scanf(" %c",&choix);. Ça correspond à : ignore les caractères invisibles puis récupère un caractère. Ça gèrera le retour chariot qui était peut-être resté dans le buffer d'échange avec la console.

    Pour ta multiplication qui ne marche pas, la solution t'a été donnée. Pour le traitement de la division, tu as pourtant bien géré cela. Peut-être grâce à une autre "astuce" lue sur un forum?

Discussions similaires

  1. je veux programmer une calculatrice
    Par Waytae dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 26/09/2010, 00h52
  2. Réponses: 50
    Dernier message: 06/04/2010, 10h55
  3. Réponses: 37
    Dernier message: 01/04/2010, 14h17
  4. Réponses: 6
    Dernier message: 16/09/2008, 20h44
  5. Programmer en langage C ,une solution pour realiser ce systeme en utilisant le
    Par alilociano dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 08/06/2008, 20h20

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