Programmer une calculatrice

Pkavalier Messages postés 10 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour les génies.

Je viens vous demander de l'aide. Je veux écrire un programme qui permet à l'utilisateur de revenir au Menu principal après chaque opération de calcul. 

Quelle structure de contrôle dois-je utiliser et comment ?????

Je travaille en langage C. Voici mon code :

int main(){
  int a,b;
  int somme, diff;
  int choix ;
  printf("Menu principal \n");
  printf("1--- Addition \n");
  printf("2--- Soustraction \n");
  printf("Choisissez une opération : ");
  scanf("%d", &choix);
  switch(choix){ 
       case 1 :
          printf("saisissez les nombres : ");
          scanf("%d %d", &a, &b);
          somme = a + b;
          printf("la somme est : %d \n", somme");

          // Quelle structure ou fonction dois-je utiliser ici ?
          // Ici je veux donner le choix à l'utilisateur de retourner au Menu principal
          // sans fermer le programme ?
          break;
       // ...
  }
  return 0;
}

Le Kavalier

5 réponses

  1. PierrotLeFou
     

    Alors, je reviens de l'au-delà ...
    Voici un code très minimal dans lequel je ne fais aucune validation. Il y a de multiples façons d'améliorer ce code.
    C'est tout de même la bonne façon d'implémenter une calculatrice.
     

    #include <stdio.h>
    
    int main() {
        int operateur;   // Code de l'opérateur.
        int accumulateur = 0;   // Accumulateur
        while(1) {   // Boucle infinie
            printf("Menu:\n1. Addition\n2. Soustraction\n> ");
            scanf("%d", &operateur);
            int nombre;
            switch(operateur) {
                case 1:
                    printf("Entrez le nombre à additionner ");
                    scanf("%d", &nombre);
                    accumulateur += nombre;
                    break;
                case 2:
                    printf("Entrez le nombre à soustraire ");
                    scanf("%d", &nombre);
                    accumulateur -= nombre;
                    break;
            }
            printf("Accumulateur: %d\n", accumulateur);
        }
    }
    2
  2. Pkavalier Messages postés 10 Statut Membre 1
     

    Vous êtes là ?


    0
  3. PierrotLeFou
     

    On n'est pas forcément là ! Place tout ton code (menu + switch) dans une boucle while par exemple.

    while(...) {
        // menu
        // validation si requis
        switch(...) {
            case 1: // pour l'addition
                break;
            case 2: // pour la soustraction
                break;
        }
    }
    0
  4. Pkavalier Messages postés 10 Statut Membre 1
     

    Je vous présente toutes mes excuses. J'ai cliqué sur le l'option "Résolu" sans me rendre compte. 


    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    J'ai un peu nettoyé le fil de discussion et je pense que la réponse #8 de Pierrot répond à la question initiale.

    @Pkavalier StatutMembre si tu as besoin de précisions, merci de les demander dans ce même fil de discussion. Dans le doute, je le bascule en résolu.

    Si tu veux aller plus loin, il est possible de saisir directement un calcul complet et parenthésé en tenant compte de le cardinalité, de la priorité et de l'associativité de chaque opérateur. Pour cela, on utilise typiquement l'algorithme de Shunting Yard.

    Bonne continuation

    0