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

cutertarget Messages postés 1 Date d'inscription   Statut Membre -  
ptidavid Messages postés 1322 Statut Membre -
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 ;-)
Configuration: Windows 7
Firefox 3.5.6

2 réponses

  1. ptidavid Messages postés 1322 Statut Membre 108
     
    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
  2. le concombre javelisé
     
    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
    1. ptidavid Messages postés 1322 Statut Membre 108
       
      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