Je me pose une question sur la partie "Les conditions" du cours de programmation C de Mathieu Nebra et particulièrement sur le switch.
Dans l'exemple du cours, création d'un menu, nous mettons "case 1", "case 2"...
Si je tape 1, cela sélectionne le menu correspondant au choix 1. Cependant, dans le code, cela renvoie en fait au deuxième printf.
Pourquoi cela n'affiche pas : === Menu === ?
Je n'arrive pas a comprendre la logique
Merci a toutes et tous !
Bonne journée,
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int choixMenu;
printf("=== Menu ===\n\n");
printf("1. Royal Cheese\n");
printf("2. Mc Deluxe\n");
printf("3. Mc Bacon\n");
printf("4. Big Mac\n");
printf("\nVotre choix ? ");
scanf("%d", &choixMenu);
printf("\n");
switch (choixMenu)
{
case 1:
printf("Vous avez choisi le Royal Cheese. Bon choix !");
break;
case 2:
printf("Vous avez choisi le Mc Deluxe. Berk, trop de sauce...");
break;
case 3:
printf("Vous avez choisi le Mc Bacon. Bon, ca passe encore ca ;o)");
break;
case 4:
printf("Vous avez choisi le Big Mac. Vous devez avoir tres faim !");
break;
default:
printf("Vous n'avez pas rentre un nombre correct. Vous ne mangerez rien du tout !");
break;
}
printf("\n\n");
return 0;
}
Je pense que je me suis mal exprime. Cela fonctionne parfaitement pour moi, je cherche juste a comprendre le code. Pourquoi en tapant 1 je tombe sur ---) 1. Royal Cheese et pas sur le printf précèdent dans le code (=== MENU ===) ? Sachant que dans le code j'ai plusieurs printf a la suite, le choix sélectionne le 2eme printf.
C'est vraiment une question bête mais ca bloque ma reflexion
Ta question n'est pas plus compréhensible que la première !
Un code s'exécute de haut en bas :
Tout d'abord il t'affiche le menu :
=== Menu ===
1. Royal Cheese
2. Mc Deluxe
3. Mc Bacon
4. Big Mac
Votre choix ?
puis tu dois saisir un nombre affecté à une variable choixMenu
ensuite tu donnes cette variable au swtich et en fonction de la valeur de la variable le switch va faire un saut sur le case correspondant à la valeur de la variable et il va exécuter le code qui suit le case en question. S'il rencontre un break il fait un sauf en dehors du switch vers le bas. Si aucune des valeurs ne correspond à un case il fait un saut sur le default.
Pourquoi en tapant 1 je tombe sur ---) 1. Royal Cheese et pas sur le printf précèdent dans le code (=== MENU ===) ? Sachant que dans le code j'ai plusieurs printf a la suite, le choix sélectionne le 2eme printf.
Ah si, tu tombes aussi sur le printf précédent ! Le printf précédent, c'est
printf("\n");
qui fait un simple passage à la ligne. Tu n'as pas le passage à la ligne ?
Quant au 2ème printf du switch, c'est
printf("Vous avez choisi le Mc Deluxe. Berk, trop de sauce...");
Ben non : il n'y va pas (si tu tapes 1) ! (Ou alors c'est le passage à la ligne que tu comptes comme premier printf ???)
Astuce : l'éditeur de code numérote les lignes. Sers-t'en pour désigner les printf !
Pour t'en convaincre, enlèves tous les printf avant le swittch et remplace par printf(">"); Tu ne verras plus ton menu. Et si tu tapes 1, tu auras le choix correspondant à 1.
Le Tout est souvent plus grand que la somme de ses parties.
if(choixMenu==1)
printf("Vous avez choisi le Royal Cheese. Bon choix !");
else if(choixMenu==2)
printf("Vous avez choisi le Mc Deluxe. Berk, trop de sauce...");
else if(choixMenu==3)
printf("Vous avez choisi le Mc Bacon. Bon, ca passe encore ca ;o)");
else if(choixMenu==4)
printf("Vous avez choisi le Big Mac. Vous devez avoir tres faim !");
else
printf("Vous n'avez pas rentre un nombre correct. Vous ne mangerez rien du tout !");
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Michel ! Tu déterre les sujets de 2021 ? C'est fini 2021 ! on est en 2022 !
...
Les conditions le switch
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent