Partage
  • Partager sur Facebook
  • Partager sur Twitter

Service Mc Donald

Besoin d'aide

    26 juin 2007 à 11:03:29

    Bonjour à tous,
    Je souhaiterai créer un menu Mc Donald (Simple exercice), qui a pour but d'additionner chaque demande du client.
    C'est à dire que le menu comportera plusieurs Menu McDo, les Desserts ...
    Je souhaite que le client puisse choisir autant de menu qu'il le veut sans toujours faire une boucle d'un switch ou autre, quelqu'un pourrait il m'aiguiller la dessus ?
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      26 juin 2007 à 11:07:33

      Si j'ai bien compris tu veux faire un choix multiple ( tant que l'utilisateur en veut ) sans faire de boucle ?? excuse moi mais jcrois pas que ça soit possible en fait :p

      t'as déjà un plan organisé de ce que ton programme va faire ? si non fais le et ensuite on verra :) si oui, donne le :p
      • Partager sur Facebook
      • Partager sur Twitter
        26 juin 2007 à 11:21:10

        Non je pense que c'est possible, sélectionner avec les flèche un menu edt appuyer sur entrée afin de comptabiliser une fois le produit et pouvoir se redirigé dans le menu avec les flèche et valider, ce n'est pas un programme mais simplement un exercice pour m'entrainer que je me suis imposé
        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2007 à 11:26:41

          jpense pas que ça soit possible moi :-° t'auras forcément au moins une boucle dans ton truc :p

          exercice == programme dans ton cas hein :p
          • Partager sur Facebook
          • Partager sur Twitter
            26 juin 2007 à 14:21:19

            Pas possible de manière portable.

            Fais une boucle sur ton menu. :)
            • Partager sur Facebook
            • Partager sur Twitter
              26 juin 2007 à 14:24:14

              pour faire ca il te faut une boucle dans ton programme et, si tu le fais en console, il te faut utiliser conio2.h pour recuperer la touche sur laquelle appuie l'utilisateur (fleche haut/bas ou entree) puis deplacer le pseudo-curseur sur les differents menus.
              Impossible de faire ce programme sans boucle a moins d'utiliser goto (qui est mal) ou de c/c un nombre incalculable
              ton code pour que la personne puisse faire plusieur choix :p

              PS: j'ai un petit probleme d'accent...
              • Partager sur Facebook
              • Partager sur Twitter
                26 juin 2007 à 15:21:25

                Citation : Neodyme

                Impossible de faire ce programme sans boucle a moins d'utiliser goto (qui est mal)



                Pourquoi goto est mal ? utiliser un goto reviens sensiblement à faire une boucle hein :-°
                • Partager sur Facebook
                • Partager sur Twitter
                  26 juin 2007 à 15:28:10

                  Citation

                  Pourquoi goto est mal ? utiliser un goto reviens sensiblement à faire une boucle hein


                  Non.
                  Un peu de lecture : http://www.developpez.net/forums/showthread.php?t=75764
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    26 juin 2007 à 15:29:14

                    Citation : redox

                    Pourquoi goto est mal ? utiliser un goto reviens sensiblement à faire une boucle hein :-°



                    Oui, bien sûr... :magicien:

                    goto = code spaghetti et illisible, et va à l'encontre de la programmation structurée.
                    Heureusement que -ed- n'a pas vu ton message parce qu'il aurait littéralement pété un cable.

                    Quand on ne sait pas, on affirme pas.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 juin 2007 à 15:33:46

                      Je n'affirme pas :) je demande [ et ce que j'ai dit s'applique dans cette situation là :) ] ^^

                      Ayant fait un peu d'assembleur, je ne trouve pas les goto si affreux que
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        26 juin 2007 à 15:40:56

                        C != ASM

                        C = langage procédural et structuré.
                        ASM = langage non procédural.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 juin 2007 à 15:43:00

                          C'est gentil de préciser mais la différence est nette dans mon esprit :)

                          Arretons là le débat sur le goto :p
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 juin 2007 à 17:23:25

                            (effectivement vaut mieux arrêter, sur le lien qu'a donné odsen, ils sont restés 10 pages à en parler, et en sont arriver à parler de la guerre froide et de l'URSS (j'ai pas suivis toutes les péripéties mais c'est assez troubalnt ^^ ))

                            Sinon pour revenir au problème de départ, la réponse est oui tu peux mais à éviter :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 juin 2007 à 22:14:45

                              C'est Cyber76 (Pseudo supprimé, je ne sais pourquoi !!!), voici donc mon code en effet j'ai eu besoin de boucle, dites moi ce que vous en pensez, meme si la forme n'est pas spécialement belle :
                              Je précise que je fais cela simplement pour m'exercer, donc aucun intérêt ce programme ^^


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

                              int main(int argc, char *argv[])
                              {
                                  double total = 0;
                                  long choix = 0;
                                  double argent = 0;
                                  double rendu = 0;
                                  long a = 0;
                                  long b = 0;
                                  long c = 0;
                                  long d = 0;
                                  long e = 0;
                                  long f = 0;
                                  long g = 0;
                                  long h = 0;
                                  long i = 0;
                                  long j = 0;
                                  do
                                  {
                                  system("cls");
                                  printf("\t\t\t ====== Mc Donald's ======\n\n");
                                  printf("Bonjour, Lisa a votre service, que souhaitez-vous ?\nVous avez la possibilite de choisir plusieurs menus, en voici la liste : \n\n");
                                  printf("\n1. Menu HappyMeal");
                                  printf("\n2. BigMac");
                                  printf("\n3. Mc Deluxe");
                                  printf("\n4. Chicken Mythic");
                                  printf("\n5. Le P'tit Moutarde");
                                  printf("\n6. Filet au Fish");
                                  printf("\n7. Croque Jambom");
                                  printf("\n8. Hamburger");
                                  printf("\n9. Sundae De Saison");
                                  printf("\n10. Mc Flurry\n");
                                  printf("\n11. Validation de votre commande");
                                 
                                  printf("\n\nTapez la ou les selections de votre choix : ");
                                  scanf("%ld", &choix);
                                 
                                  switch(choix)
                                  {
                                          case 1:
                                               a++;
                                               total += 6.50;
                                          break;
                                         
                                          case 2:
                                               b++;
                                               total += 3.50 ;
                                          break;
                                         
                                          case 3:
                                               c++;
                                               total += 3.00 ;
                                          break;
                                         
                                          case 4:
                                               d++;
                                               total += 4.00 ;
                                          break;
                                         
                                          case 5:
                                               e++;
                                               total += 4.50 ;
                                          break;
                                         
                                          case 6:
                                               f++;
                                               total += 3.00 ;
                                          break;
                                         
                                          case 7:
                                               g++;
                                               total += 1.50 ;
                                          break;
                                         
                                          case 8:
                                               h++;
                                               total += 1.00 ;
                                          break;
                                         
                                          case 9:
                                               i++;
                                               total += 2.00 ;
                                          break;
                                         
                                          case 10:
                                               j++;
                                               total += 2.50 ;
                                          break;     
                                  }
                                  }while (choix != 11);
                                  printf("Recapitulatif de votre commande, vous avez choisi :\n");
                                  if(a >= 1)
                                  {
                                       printf("\n- %ld Menu Happy Meal", a)
                                  }
                                  if(b >= 1)
                                  {
                                       printf("\n- %ld Big Mac", b)
                                  }
                                  if(c >= 1)
                                  {
                                       printf("\n- %ld Mc Deluxe", c)
                                  }
                                  if(d >= 1)
                                  {
                                       printf("\n- %ld Chicken Mythic", d)
                                  }
                                  if(e >= 1)
                                  {
                                       printf("\n- %ld Le P'tit Moutarde", e)
                                  }
                                  if(f >= 1)
                                  {
                                       printf("\n- %ld Filet au Fish", f)
                                  }
                                  if(g >= 1)
                                  {
                                       printf("\n- %ld Croque Jambon", g)
                                  }
                                  if(h >= 1)
                                  {
                                       printf("\n- %ld Hamburger", h)
                                  }
                                  if(i >= 1)
                                  {
                                       printf("\n- %ld Sundae de Saison", i)
                                  }
                                  if(j >= 1)
                                  {
                                       printf("\n- %ld Mc Flurry", j)
                                  }
                                  printf("\n\nLe montant total de votre commande est de %lf Euros\n", total);
                                  printf("\nCombien d'argent possedez-vous ? ");
                                  scanf("%lf", &argent);
                                  if(total > argent)
                                  {
                                           printf("\nVous ne possedez pas assez d'argent pour valider cette commande, a bientot\n");
                                  }
                                  else if(total < argent)
                                  {
                                       rendu = argent - total;
                                       printf("\nVoici le rendu de votre monnaie : %lf\nA bientot chez Mc Donald's\n", rendu);
                                  }
                                  else
                                  {
                                      printf("\nTout pile le compte, tres bien, je vous remercie de votre visite chez Mc Donald's\n");
                                  }
                                 
                               
                                system("PAUSE");     
                                return 0;
                              }
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 juin 2007 à 22:45:50

                                Beurk!!!
                                Vire moi ces variables de 1 lettres + ces if ... c'est horribles, dit plutot ce que la personne a commander dans les cases.
                                Tu peux faire un .h ou il y aura des defines et ainsi ca va augmenter la lisibilite de ton code ;) (au lieu de mettre "case 1:" tu mettras "case HAPPY_MEAL :" par exemple).
                                Ensuite question : Que se passe-t'il si on entre autre chose que des chiffres entre 1-11?

                                Kurapix
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 juin 2007 à 23:49:12

                                  Merci pour tes critiques pour l'instant j'en suis a la partie deux (les tableaux) mais je révise essentiellement les bases donc Define ... je ne connais pas encore je fais en fonction de ce que je connais en effet j'aurais pu faire des fonctions et des prototypes dans un fichier header mais je n'ai pas voulu tout simplement, essayes si tu rentre moins de 1 ou plus de 11 ca réaffiche le menu sans rien comptabiliser ;-)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 juin 2007 à 5:55:42

                                    Ma question était ironique lol, en fait ce que je voulais dire c'est qu'il faudrait plutôt mettre un default dans ton switch ;) .

                                    Kurapix
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 juin 2007 à 9:05:58

                                      Faire des fonctions et choisir des noms de variables plus claires auraient pourtant rendu ton code plus clair et beaucoup plus agréable à relire, surtout pour les gens qui ne l'ont pas écrit eux-mêmes et qui cherchent à t'aider.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        27 juin 2007 à 9:38:52

                                        Est-ce que quelqu'un pourrait m'expliquer le fonctionnement de goto, parce que ce n'est pas expliqué dans le tutoriel de C et j'en ai absolument besion à moins de faire un switch 66 lignes. J'en abuse pas, j'en ai simplement besoin d'un.
                                        Merci
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          27 juin 2007 à 10:18:56

                                          Comme cela a été dit précédemment le C n'est pas de l'assembleur ou du basic des années 80 donc on oublie les Goto

                                          Tu structure mieux ton code [genre avec des while/for/if/.. toussa :p ] et t'aura pas besoin de goto :-° ok ;) ?

                                          En plus au moins explique pourquoi t'as besoin impérativement d'un goto ?
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            27 juin 2007 à 10:25:40

                                            En fait je crée un jeu d'allumettes, et pour afficher les allumettes, faut faire un énorme switch ( plus de 70 lignes) et ça s'affiche que quand c'est au tour de l'ordi, jamais au tour du joueur. donc, pour éviter ça, j'aurais besion d'un goto. C'est toi meme qui disait que c'était pas si mal les goto, et je dois en mettre qu'un.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              27 juin 2007 à 10:40:46

                                              Fais un switch!! Si tu veux programmer, fais le dans les règles de l'art ;) !

                                              Et si tu as la flemme de faire ton switch, c'est que tu as la flemme de programmer, donc, tu peux désinstaller tout de suite ton IDE :-° !
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                27 juin 2007 à 10:44:15

                                                non, mais mon switch je l'ai déjà fait 2 fois et il fait plus de 70 lignes. En fait, le probleme ne vient pas de la flemme (copier-coller c'est facile), mais plus de 200 lignes du meme switch, ça surcharge un peu le programme surtout pour un truc pas très développé.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  27 juin 2007 à 11:00:04

                                                  Citation : luap

                                                  C'est toi meme qui disait que c'était pas si mal les goto, et je dois en mettre qu'un.



                                                  Ne te méprends pas :) Il me semble avoir dit que j'en mettais jamais dans mes programmes en C et en avoir expliqué les raisons :p

                                                  Si tu faisais une fonction pour l'affichage tu crois pas que ca serait bien ?
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    27 juin 2007 à 11:37:43

                                                    Aaaaaaaah ouaaaaaaiiiiiiiiis, merci beaucoup !!!
                                                    Très bonne idée
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                    Service Mc Donald

                                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                    • Editeur
                                                    • Markdown