Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de condition

Euh pour continuer après (enfin c'est bizarre)

Sujet résolu
Anonyme
    25 février 2006 à 22:34:25

    Bonsoir tous le monde :)

    Alors voilà, sa fait deux heures que j'essaye de réussir à quitter une sous condition pour revenir à une condition principale situés au dessus (euh dans le code), voici un exemple de coe:


        if(choix == 0)
          {
            printf("blabla");
            scanf("%ld", &sousChoix);
            }           
                 
            if(sousChoix == 1)
            {
                if(trucAAvoir < 6)
                {
                    printf("Vous n'avez pas assez de truc à avoir!\n\n");                                       
                    //Et la j'aimerais réussir à renvoyer l'utlisateur sur la condition if(choix == 0)
                    }
                           
                else
                {               
                   printf("blabla");
                   scanf("%ld", &trucmuche);               
                   }       


    Donc si vous savez comment faire pour faire ceci merci d'avance :)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      25 février 2006 à 22:49:56

      je ne vois pas bien ou est le problème... tu ferme l'accolade (tu la met bien en dessous du if correspondant)et voila !
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        25 février 2006 à 22:53:21

        Euh bah le problème c'est que je n'arrive pas à faire en sorte que le programme renvoie l'utilisateur à la première condition s'il est attérit dans celle ou il ne peut rien faire car il ne possède pas assez de trucmuche.
        • Partager sur Facebook
        • Partager sur Twitter
          26 février 2006 à 9:10:08

          tu as essaye un do ...while au dessus du premier if ??

          do{
          .
          .
          .
          }while ( trucàAvoir < 6);

          par contre n'oublie pas de mettre la modif du trucàAvoir dans le do sinon ca fait une boucle infini ^^

          à bientôt
          • Partager sur Facebook
          • Partager sur Twitter
            26 février 2006 à 9:27:28

            * Va se faire déchiqueter *

            Tu peux éventuellement utiliser un goto, m'enfin une boucle serait vraiment beaucoup, beaucoup mieux.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              26 février 2006 à 13:00:11

              Je désespère, j'ai beau utiliser des boucles sa ne change rien...... (ou bien sa n'affiche carrément pas ce qu'il faut..).
              • Partager sur Facebook
              • Partager sur Twitter
                26 février 2006 à 13:29:12

                Je n'ai pas très bien compris ton code (tu pourrais indenter :p )
                Mais essaie des conditions multiples :
                while (choix == 0 && truc_a_avoir < 6)
                {
                    scanf("%ld", &sous_choix)
                    if (sous_choix == 1) printf("Pas assez de trucs !");
                    else break;
                }

                if (sous_choix == 1 && truc_a_avoir > 6)
                {
                    printf("blabla");
                    scanf("%ld", &trucmuche);
                }
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  26 février 2006 à 15:11:57

                  Merci de m'avoir aidé, mais j'ai trouvé, en faites le problème c'est que je faisait apelle à une fonction trop tôt (ou du moins qu'une condition du fichier main.c avez besoin du début du code d'une fonction d'un autre fichier... (donc j'ai tous mit dans le fichier en question et sa marche parfaitement :p ).

                  Encore merci de m'avoir aidé :)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    27 février 2006 à 17:20:26

                    une petite question à mleg:
                    c'est quoi un goto ?
                    d'après le nom sa me fait penser à un truc qui dit "retourne à cette ligne-ci",
                    mais en fait je ne sais pas ce que c'est ... :lol:
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 février 2006 à 19:19:50

                      c'est une instruction permettant effectivement d'aller directement à une étiquette.

                      Syntaxe : goto etiquette;

                      Pour déclarer le label, par exemple :

                      a:
                      scanf("%d", ma_var);
                      if (ma_var < 5)
                          goto a;
                      else ;


                      ... où 'a' est l'étiquette.

                      Cependant, l'utilisation du goto est très mal vue : elle rompt la linéarité du programme.

                      En effet, pour notre exemple, il aurait été meilleur de faire une boucle.

                      Voilà.

                      ++.
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        27 février 2006 à 21:04:15

                        en fait dans un programme comme celui-ci (inventé):

                        long a = 0;
                        printf("coucou\n\n");
                        scanf("%ld", &a);
                        printf("salut c'est moi! le nombre choisi est %ld", a);

                        goto printf("coucou\n\n");


                        on a le droit de faire ça ? c'est bizarre quant même...

                        et après être revenu à la ligne printf("coucou\n\n"); le programme continuera à partir de cette ligne ou il reprendra après le goto directement, sans faire le scanf qui suit le coucou ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 février 2006 à 21:21:07

                          Ah non ah non !

                          ``printf("coucou\n\n"); n'est pas un label !

                          Une étiquette se déclare ainsi :

                          etiquette:


                          ... c'est à dire nom_label puis ':'.

                          Après si tu place le label avant le goto, ça fera l'office d'une boucle, donc il reprendra toutes les instructions entre l'étiquette et lui-même.

                          Voilà ce qui se passe :

                          int a = 0;
                          label: < - - - - - - - - - - - - - - - - -
                          printf("coucou\n\n");                     |
                          scanf("%d", &a);                          |
                          printf("salut c'est moi!");               |
                                                                    |
                          goto label; - - - - - - - - - - - - - - -


                          En revanche si tu place l'étiquette après le goto, alors tu sauteras les instructions entre le label et ce goto.

                          J'espère que c'est plus clair :) .

                          ++
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            27 février 2006 à 22:23:30

                            merci mon maître :D:D
                            c'est drôlement plus clair !
                            juste une chose: c'est quoi exactement un label ?
                            ce que j'entend par "exactement", c'est... dur à expliquer!
                            m'enfin c'est quand même pas qu'un mot dont on se sert comme ça...!
                            on peut le définir n'importe quand, n'importe où ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 février 2006 à 12:37:51

                              Citation : the_kanard

                              merci mon maître :D:D
                              c'est drôlement plus clair !



                              Faut pas déconner, si je suis un maître tous les élèves m'ont dépassés :p .

                              Citation : the_kanard

                              juste une chose: c'est quoi exactement un label ?
                              ce que j'entend par "exactement", c'est... dur à expliquer!
                              m'enfin c'est quand même pas qu'un mot dont on se sert comme ça...!
                              on peut le définir n'importe quand, n'importe où ?



                              N'importe quand, n'importe où, sauf en paramètres d'une fonction (m'enfin faut vraiment le vouloir là) je pense.

                              label:
                              printf("...");


                              c'est pareil que :

                              label: printf("...");


                              ++
                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 février 2006 à 12:44:14

                                Mais un goto sa ce répette à l'infinie ?

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 février 2006 à 12:53:03

                                  Oui. Sauf en cas de structure conditionnelle bien entendu.
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Problème de condition

                                  × 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