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

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