Besoin d'aide création d'une boucle en C

Fermé
cutertarget Messages postés 1 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 24 décembre 2009 - 24 déc. 2009 à 02:05
ptidavid Messages postés 1273 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 16 février 2010 - 24 déc. 2009 à 13:27
Bonjour,

En me promenant sur le net j'ai découvert le site du 0 et je m'y suis un peu intéressé. Cependant j'ai un petit soucis .. je suis bloqué en essayant d'ajouter une boucle a mon menu ....

Voici mon code :

// site0menu.cpp : définit le point d'entrée pour l'application console.
//

#include <stdafx.h>
#include <stdio.h>
#include <stdlib.h>


int main ()

{
int autrechoix;
while (autrechoix=1)
{
int choixmenu;

printf ("-- MENU MACPPPPPPONALD--\n\n");
printf ("Choix n1 : Cheese\n");
printf ("choix n2 : Burger\n");
printf ("choix n3 : DoubleCheese\n");
printf ("choix n4 : Menu M\n");
printf ("Entrez le n de votre commande : \n ");
scanf ("%d", &choixmenu);

switch (choixmenu)
{
case 1:
printf ("Cheese, bon choix !\n");
break;
case 2:
printf ("Burger, bon choix aussi !\n");
break;
case 3:
printf ("DoubleCheese, très bon choix!\n");
break;
case 4:
printf ("Menu M, le meilleur !\n");
break;
default:
printf ("Entrez un chiffre correct\n");
break;
}
int autrechoix;
printf ("Desirez-vous autre chose?\n");
printf ("Tapez 1 pour oui\n");
printf ("Si vous ne voulez rien ajouter à votre commande \n Appuyez sur n'importe quelle autre touche");
scanf ("%d", &autrechoix);
if autrechoix!=1;
{
return 0;
}

}
}




Est-ce que quelqu'un sait m'expliquer pour quoi cela ne fonctionne pas?

En gros ce dont j'aimerai arriver à c'est :

Le programme me demande ce que je veux.
Je choisis.
Il me demande si je veux quelque chose d'autre.
Si oui ( en tapant 1 ) , on re propose le menu
si non ( en tapant sur n'importe quelle autre touche ) , le menu se ferme et dit aurevoir.

Voilà merci à ceux qui pourront m'aider ;-)
A voir également:

2 réponses

ptidavid Messages postés 1273 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 16 février 2010 104
24 déc. 2009 à 02:22
Bonsoir à toi,

Bon le C++ est pas mon point fort, mais je vais essayer de t'aider. D'une part, pourquoi as-tu défini deux fois la variable autrechoix dans ton main? Ensuite pourquoi n'as-tu pas initialisé cette variable autrechoix, par exemple à 1? Car là le programme ne rentre jamais dans ta boucle while, vu que autrechoix n'a pas de valeur et ne vaut donc pas 1.
0
le concombre javelisé
24 déc. 2009 à 04:25
Salut
C'est pire que ça !
while(var=1) : ca met 1 dans var, puis on considere var comme un booleen
et comme var vaudra à chaque fois 1, la condition sera toujours vraie ;-)
0
ptidavid Messages postés 1273 Date d'inscription jeudi 3 août 2006 Statut Membre Dernière intervention 16 février 2010 104
24 déc. 2009 à 13:27
Effectivement j'avais pas vu :) Bon j'ai téléchargé Dev C++ et m'y suis mis quelques minutes. Voici le programme corrigé, il devrait faire ce que tu souhaites :

#include <cstdlib>
#include <iostream>
#include <cstdio>


int main()
{
int autrechoix=1;

while (autrechoix==1)
{
int choixmenu;
printf ("-- MENU MACPPPPPPONALD--\n\n");
printf ("Choix n1 : Cheese\n");
printf ("choix n2 : Burger\n");
printf ("choix n3 : DoubleCheese\n");
printf ("choix n4 : Menu M\n");
printf ("Entrez le n de votre commande : \n ");
scanf ("%d", &choixmenu);

switch (choixmenu)
{
case 1:
printf ("Cheese, bon choix !\n");
break;
case 2:
printf ("Burger, bon choix aussi !\n");
break;
case 3:
printf ("DoubleCheese, très bon choix!\n");
break;
case 4:
printf ("Menu M, le meilleur !\n");
break;
default:
printf ("Entrez un chiffre correct\n");
break;
}

printf ("Desirez-vous autre chose?\n");
printf ("Tapez 1 pour oui\n");
printf ("Si vous ne voulez rien ajouter à votre commande \n Appuyez sur n'importe quelle autre touche\n");
scanf ("%d", &autrechoix);

}
printf ("Au revoir!\n");
system("PAUSE"); //attente d'un appui de touche au clavier pour quitter

}





Voici les corrections faites :
- j'ai supprimé la seconde déclaration de la variable autrechoix qui était dans ta boucle while,
- j'ai initialisé autrechoix à 1 pour permettre au programme de rentrer dans ta boucle while,
- j'ai corrigé l'erreur évoquée par le concombre javelisé while (autrechoix=1) en while (autrechoix==1) (= affectation, == test condition),
- j'ai supprimé ta boucle if(autrechoix!=1)... car je la trouvais inutile,
- j'ai rajouté
printf ("Au revoir!\n");
system("PAUSE"); //attente d'un appui de touche au clavier pour quitter



Et là ça fonctionne. Si tu as des questions, n'hésite pas.
0