Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Shop Recherche
2317 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Revenir en arrière

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Revenir en arrière

n°2219716
totoricoco​11
Posté le 14-02-2014 à 17:57:28  profilanswer
 

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

mood
Publicité
Posté le 14-02-2014 à 17:57:28  profilanswer
 

n°2219718
totoricoco​11
Posté le 14-02-2014 à 18:00:43  profilanswer
 
n°2219719
gilou
Modérateur
Modzilla
Posté le 14-02-2014 à 18:09:10  profilanswer
 

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+,


Message édité par gilou le 14-02-2014 à 18:09:40

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2219723
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 14-02-2014 à 18:45:35  profilanswer
 

goto [:raph0ux]


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
n°2219817
totoricoco​11
Posté le 16-02-2014 à 14:06:31  profilanswer
 

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 ....

n°2219844
gilou
Modérateur
Modzilla
Posté le 16-02-2014 à 21:57:57  profilanswer
 

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+,


Message édité par gilou le 16-02-2014 à 22:22:33

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2219976
totoricoco​11
Posté le 17-02-2014 à 22:50:58  profilanswer
 

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 !  :wahoo:

n°2220015
gilou
Modérateur
Modzilla
Posté le 18-02-2014 à 12:39:31  profilanswer
 

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é!  --
n°2220040
totoricoco​11
Posté le 18-02-2014 à 14:36:26  profilanswer
 

Ok merci !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Revenir en arrière

 

Sujets relatifs
[SVN] Revenir à une ancienne version tout en gardant ses changementscommentaires conditionnels pour l'arrière plan sur ie9 prbleme
Tableau - revenir au début si déplacement trop grandcomment revenir sur une page cilble aprés avoir été sur la p [resolu]
Revenir en arriere doc word avec VBAProblème arrière-plan HTML
Petite image déco en arrière-plan -> positionnement ?Lecture d'un fichier (revenir en arrière ?)
Revenir en arrière : fonction php[HTML/JS] Revenir x page(s) en arrière et faire un refresh
Plus de sujets relatifs à : Revenir en arrière


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR