Revenir en arrière - C - Programmation
Marsh Posté le 14-02-2014 à 18:00:43
C'est ce liens pardon http://www.noelshack.com/2014-07-1 [...] -titre.jpg
Marsh Posté le 14-02-2014 à 18:09:10
tu fais une boucle
do {
scanf Boisson
.........
} while (Boisson < 1 || Boisson > 4);
et traites les cas 1 a 4 avec un switch
switch(Boisson) {
case 1:
printf(................);
break;
case 2:
..............
default: printf nombre invalide...
break;
}
A+,
Marsh Posté le 14-02-2014 à 18:45:35
goto
Marsh Posté le 16-02-2014 à 14:06:31
Merci beaucoup ca à marché nickel, j'ai une autre question, sachant que celui qui commande doit prendre au minimum deux composants et max quatre, quand on arrive au troisème choix de boisson un nouveau choix arrive celui d'arreter le cocktail. Mon problème étant que je ne sais pas comment lorsqu'il choisit cette option arrêter la programmation et finir le cocktail, sahcant que mon problème actuel est que lorsqu'on choisit "je ne souhaite plus de boisson" le progamme continue demandant le nb de dose, et le quatrieme choix de bouteilles ....
Marsh Posté le 16-02-2014 à 21:57:57
Question subsidiaire:
Ton utilisateur peut choisir deux fois la même boisson ou pas?
Parce que ça peut changer l'approche, ça.
A la base, tu crée un compteur de dose
a chaque boisson choisie, tu l'incrémentes
dose = 0;
do { // boucle sur le nb de doses
do { // boucle sur les choix utilisateur
switch(Boisson) {
case 1:
printf(................);
dose++;
break;
.....................
} while (Boisson < 1 || Boisson > 4);
// et tu sors avec la condition 4 doses
} while ( dose < 4 );
Tu peux alors introduire un choix supplémentaire, de valeur 5 (ou autre tant que c'est pas 1..4), pour Boisson, signifiant quitter et la condition devient
} while ( dose < 4 && (dose < 2 || Boisson != 5));
(penser d'abord a la condition d'arrêt, ( dose >= 4 || (dose >= 2 && Boisson == 5)) et la nier)
A+,
Marsh Posté le 17-02-2014 à 22:50:58
Enfaite exactement ce que j'aimerais faire c'est que lorsque j'ai ca et que l'utilisateur appuie sur 5 ( http://www.noelshack.com/2014-08-1 [...] -titre.png ) le programme passe à ca ( http://www.noelshack.com/2014-08-1 [...] titre1.png ), c'est a dire saute les étapes de la quatrième bouteille.
Merci beaucoup pour cette aide Gilou !
Marsh Posté le 18-02-2014 à 12:39:31
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+,
Marsh Posté le 14-02-2014 à 17:57:28
Bonjour,
je suis actuellement en Terminale S option Sciences de l'Ingenieur et nous sommes actuellement en plein PPE.
Pour cela mon groupe de travail et moi bossons sur une machine à cocktail automatique.
Je dois personnelement travailler sur l'interface de la machine mais je rencontre un soucis, vous verrez avec mon lien qu'il y a 4 possibilitées comme choix mais si on ne choisit pas une de ses 4 possibilité et qu'on appuie sur une mauvaise touche par exemple que dois je faire pour revenir a la question et pour que la personne retape le numero de son choix.
Merci par avance et voici le lien de l'image : http://www.noelshack.com/2014-07-1 [...] -titre.jpg