Afficher un swicth

Fermé
fatek - Modifié par Whismeril le 16/07/2015 à 13:31
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 17 juil. 2015 à 10:17
Bonjour,
je suis debutant dans la programation en C c est pourquoi je vous demande comment je pourrai afficher le resultat de la commande complete a la fin du programe. Je n'est pas trouver comment afficher la variable switch dans le dernier printf.

merci de votre aide.

#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. Royal Bacon\n");
printf("3. Royal Deluxe\n");
printf("Quelle est votre choix ?\n");
scanf("%d", &choixMenu);
printf("\n");

switch  (choixMenu)
{
case 1:
    printf("vous avez choisi le Royal Cheese !\n");
    [/download/telecharger-34060311-break break];
case 2:
    printf("vous avez choisi le Royal Bacon !\n");
    break;
case 3:
    printf("vous avez choisi le Royal Deluxe !\n");
    break;
default:
    printf("Entree incorect veuillez resseyer !\n");
    break;
}
int choixAccompagnement;
printf("=== accompagnement ===\n\n");
printf("1. Frites\n");
printf("2. Potatoes\n");
printf("3. Salade\n");
printf("Quelle est votre choix ?\n");
scanf("%d", &choixAccompagnement);
printf("\n");

switch  (choixAccompagnement)
{
case 1:
    printf("vous avez choisi des Frites !\n");
    break;
case 2:
    printf("vous avez choisi des Potatoes !\n");
    break;
case 3:
    printf("vous avez choisi de la salade !\n");
    break;
default:
    printf("Entree incorect veuillez resseyer !\n");
    break;
}
      int choixSauce;
printf("=== Sauces ===\n\n");
printf("1. Ketchup\n");
printf("2. Mayonnaise\n");
printf("3. Deluxe\n");
printf("Quelle est votre choix ?\n");
scanf("%d", &choixSauce);
printf("\n");

switch  (choixSauce)
{
case 1:
    printf("vous avez choisi la sauce ketchup !\n");
    break;
case 2:
    printf("vous avez choisi la sauce Mayannaise !\n");
    break;
case 3:
    printf("vous avez choisi la sauce Deluxe !\n");
    break;
default:
    printf("Entree incorect veuillez resseyer !\n");
    break;
}
    printf("=== Recapitulatif === \n Vous avez commander un %d avec des %d avec la sauce : %d\n",choixMenu ,choixAccompagnement ,choixSauce);
    return 0;
}


EDIT: Ajout de la coloration syntaxique.


3 réponses

Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370
Modifié par Danelectro le 15/07/2015 à 19:44
Salut,
choixMenu, choixAccompagnement et choixSauce contiennent des entiers, pas des plats. Tu devrais définir des autres variables (chaine de caractères) qui contiennent l'intitulé de ces plats.
Puis dans les switch, en plus d'afficher "Vous avez choisi blablabla", tu rempli ces variables.
Sinon ça marquera "Vous avez commandé un 1 avec des 3 avec la sauce : 2"
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
16 juil. 2015 à 10:22
au lieu de remplir des variables dans les switchs, fatek pourrait simplement utiliser des tableaux de chaînes de caractères contenant le texte à afficher.

on peut faire comme cela :

#include <stdio.h>

#define NMENUS 3    /* nombre de menus */
#define MAXLEN 15   /* longueur max chaîne de caractères */

int main(void)
{
    char menu[NMENUS][MAXLEN] = { "Royal Cheese", "Royal Bacon",                
        "Royal Deluxe" };
    printf("Menu 2 = %s\n", menu[1]);

    return 0;
}

Cela permet d'automatiser aussi l'affichage du menu.

@fatek : les chaînes de caractères en C sont des tableaux de char (terminés par
'\0'
). Donc un tableau de chaînes de caractères peut être contenu dans un tableau à deux dimensions de chars. En C, les indices des tableaux commencent à zéro. Donc pour accéder au 1er élément, tu utilises l'indice 0, pour le 2ème élément, l'indice 1, etc.

Dal
0
Danelectro Messages postés 1737 Date d'inscription samedi 25 février 2012 Statut Membre Dernière intervention 29 mars 2018 370 > [Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024
16 juil. 2015 à 12:56
J'y ai pensé aussi, mais je ne pense pas que fatek a vu les tableaux, mieux vaut ne pas l'embrouiller. Je reconnais cet exo, il vient du début du cours d'OpenClassrooms.
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
Modifié par [Dal] le 16/07/2015 à 14:23
s'il n'a pas vu les tableaux, il n'a pas vu les chaînes de caractères non plus :-)
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
16 juil. 2015 à 21:45
Sauf s'il a vu les pointeurs :-p.
0
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 1 096
17 juil. 2015 à 10:17
hehe, fiddy, arrête d'embrouiller fatek ;-)

@fatek, tu es toujours là ? as tu réussi a faire ce que tu souhaitais ?

Dans le pire des cas, avec "les moyens du bord", c'est à dire sans connaissances additionnelles, tu peux refaire 3 switchs à la fin, où tu contrôles de nouveau le contenu de choixMenu, choixAccompagnement et choixSauce déjà saisis pour afficher le texte récapitulatif sous la forme que tu souhaites. Cela fait beaucoup de répétitions de code, et un programmeur C expérimenté ne ferait pas comme cela, mais si c'est ton premier code source en C,... tu peux ... expérimenter :-D
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 juil. 2015 à 19:44
Bonjour,
Switch n'est pas une variable mais une instruction. Donc ça n'a pas de sens... Que veux-tu afficher au juste ?
Cdlt
0
j aimerai afficher un récapitulatif de fin commande ou il est ecrit tous ce que le client a commander

merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 juil. 2015 à 23:13
Bah c'est ce que vous avez fait.
printf("=== Recapitulatif === \n Vous avez commander un %d avec des %d avec la sauce : %d\n",choixMenu ,choixAccompagnement ,choixSauce); 

Cela ne vous convient pas ?
N'hésitez pas à montrer un exemple de ce que vous souhaitez pour que ce soit plus clair.
Cdlt,
0