Programmer une calculatrice

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. 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;
        }
    }
    1. Je vous présente toutes mes excuses. J'ai cliqué sur le l'option "Résolu" sans me rendre compte. 


      1. 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);
            }
        }
        1. Modérateur

          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.

           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