Comme j'ai dit, il ne faut pas faire avec une suite de if...else, (on fait en moyenne plusieurs tests par valeur de boisson choisie par l'utilisateur ) mais un switch...case ne fait qu'un seul test par choix (et de plus, permet de traiter un choix invalide avec default, alors qu'on peut facilement oublier un else final après une suite de if ... else if.
D'autre part, on ne réécrit pas 4 fois le même code s'il y a quatre choix possibles.
On passe 4 fois dans le même code, en faisant attention à quel choix on en est.
Un exemple possible de manière de faire (tapé a vue, donc pas exempt de fautes de frappes, il y a peut être mieux, mais ça donne l'idée):
#define CHOIX_GIN 1
#define CHOIX_RHUM 2
...
// supposons qu'il y a un choix parmi 5 boissons
#define CHOIX_VERMOUTH 5
#define CHOIX_STOP 6
// le choix des boissons, au plus 4
int Boissons[4] = {0,0,0,0};
// Les noms des boissons à choisir
char *NomBoissom[5] = { "gin", "rhum", ..., ..., "vermouth"};
// boucle sur les choix de boissons
for (i=1; i <= 4; ) {
// demander la boisson
printf blabla
// récupérer la valeur dans choix
scanf &choix
// traiter le choix
switch (choix) {
case CHOIX_GIN:
case CHOIX_RHUM:
....
case CHOIX_VERMOUTH:
Boissons[i] = choix;
printf("Boisson %d: %s\n", i, NomBoissom[choix - 1]);
++i; // pour avancer dans la boucle for
break;
case CHOIX_STOP:
// si on veut pas quitter avant au moins deux choix
if (i >= 3) {
i = 5; // pour quitter la boucle for
}
else {
printf au moins deux choix
}
break;
default:
printf erreur
break;
}
}
printf cocktail terminé
A+,
Message édité par gilou le 18-02-2014 à 12:52:38
---------------
There's more than what can be linked! -- Iyashikei Anime Forever! -- AngularJS c'est un framework d'engulé! --