Partage
  • Partager sur Facebook
  • Partager sur Twitter

impossible de sortir de la boucle

Language C

    15 juin 2019 à 12:11:30

    Bonjour,

    J'apprend le C et j'ai voulu faire une calculette.

    J'ai une boucle a la fin ou c'est marqué "erreur ici" en commentaire  je pourrai mettre while(1>continuez || continuez>2); mais je veux comprendre pk cette ligne ne marche pas : while (continuez!=1 || continuez!=2);

    Voici mon code (pour mettre mon code dans ce sujet j'ai pas trouver le language C du coup j'ai mis C#, je c'est pas si sa change quelque chose...) : 

    #include <stdio.h>
    #include <stdlib.h>
    
    double addition(double nombre1,double nombre2)
    {   double resultat=0;
        resultat=nombre1+nombre2;
        return resultat;
    }
    double soustraction(double nombre1,double nombre2)
    {
        return nombre1-nombre2;
    }
    double division(double nombre1,double nombre2)
    {
        return nombre1/nombre2;
    }
    double multiplication(double nombre1,double nombre2)
    {
        return nombre1*nombre2;
    }
    int main()
    {
        double nombre1=0,nombre2=0,total=0;
        int MethodeCalcul=0,continuez=0;
    
    
        printf("--Calculatrice--\n");
        printf("\n");
    
    
        printf("Tape ton premier nombre\n");//Debut du programme
        scanf("%lf",&nombre1);
    do
    {
    
    
        printf("Que veux tu faire ?\n");//Methode de calcul
        printf("1.Additionnez ?\n");
        printf("2.Soustraire ?\n");
        printf("3.Diviser ?\n");
        printf("4.Multiplier ?\n");
    
    
        scanf("%d",&MethodeCalcul);
    
        if(MethodeCalcul!=1 || MethodeCalcul!=2 ||MethodeCalcul!=3 || MethodeCalcul!=4)//
        {
            while (MethodeCalcul<1 || MethodeCalcul>4)
            {
               printf("Erreur\n Tapez un nombre correct \n");
                scanf("%d",&MethodeCalcul);
            }
    
        }
        else
        {
            printf("Erreur!!!\n");
        }
    
        printf("Tapez le deuxieme nombre\n");//le deuxieme nombre
        scanf("%lf",&nombre2);
    
        if (MethodeCalcul==1)
        {
            printf("Le resultat de %lf + %lf est donc %f\n",nombre1,nombre2,total=addition(nombre1,nombre2));
        }
        else if (MethodeCalcul==2)
        {
            printf("Le resultat de %lf - %lf est donc %f\n",nombre1,nombre2,total=soustraction(nombre1,nombre2));
        }
        else if (MethodeCalcul==3)
        {
            printf("Le resultat de %lf / %lf est donc %f\n",nombre1,nombre2,total=division(nombre1,nombre2));
        }
        else if(MethodeCalcul==4)
        {
            printf("Le resultat de %lf X %lf est donc %f\n",nombre1,nombre2,total=multiplication(nombre1,nombre2));
        }
        else
        {
            printf("Je n'ai pas compris votre demande\n");
        }
    
        do
        {
            printf("Continuez ?\n");//continuez
            printf("1.OUI  2.NON\n");
            scanf("%d",&continuez);
    
    
            if (continuez==1)
            {
                nombre1=total;
            }
            else if (continuez==2)
            {
                printf("Au revoir!!\n\n");
            }
            else
            {
                printf("Erreur\n");
            }
    
        } while (continuez!=1 || continuez!=2);
    
    
    
    }while(continuez==1);
    }
    

    merci d'avance pour votre aide

    Et pardon pour les fautes d'orthographes...

    -
    Edité par jeremie05 15 juin 2019 à 12:14:17

    • Partager sur Facebook
    • Partager sur Twitter
      15 juin 2019 à 12:43:53

      Pour ta remarque "Voici mon code (pour mettre mon code dans ce sujet j'ai pas trouver le language C du coup j'ai mis C#, je c'est pas si sa change quelque chose...) : "

      Ce sont bien 2 languages différents. Apres je ne connais pas ce forum, je ne sais pas non plus si c'est possible de choisir C.

      "J'ai une boucle a la fin ou c'est marqué "erreur ici" en commentaire "

      Il n'y a nulle part ce commentaire...

      Je ne suis pas certain de ce que tu as voulu faire ici:

      do
          {
              printf("Continuez ?\n");//continuez
              printf("1.OUI  2.NON\n");
              scanf("%d",&continuez);
       
       
              if (continuez==1)
              {
                  nombre1=total;
              }
              else if (continuez==2)
              {
                  printf("Au revoir!!\n\n");
              }
              else
              {
                  printf("Erreur\n");
              }
       
          } while (continuez!=1 || continuez!=2);
       

      Ton while (continuez!=1 || continuez!=2); sera toujours vrai car:

      Si continuez = 1 alors continuez != 2

      et si continuez = 2 alors continuez != 1

      -
      Edité par ChristopherFargere 15 juin 2019 à 12:49:22

      • Partager sur Facebook
      • Partager sur Twitter
        15 juin 2019 à 12:50:43

        Ton while ligne 104 est toujours vrai !
        • Partager sur Facebook
        • Partager sur Twitter
          15 juin 2019 à 13:40:55

          oui desole j'ai oublie de mettre ce commentaire 

          oui mais du coup les 2 barres || veulent bien dire 'ou bien ' ?

          Je voudrais dire:  tant que continuer n'est pas égal a 1 ou bien que continuez n'est pas égal a 2 alors continuez la boucle

          -
          Edité par jeremie05 15 juin 2019 à 13:41:36

          • Partager sur Facebook
          • Partager sur Twitter
            15 juin 2019 à 14:01:02

            Pose toi la question si continuer est égal à 1

            n'est pas égal à 1 donc faux, ou bien n'est pas égal à 2 donc vrai

            soit : faux ou vrai ce qui fait vrai donc on reprend la boucle.

            • Partager sur Facebook
            • Partager sur Twitter
              15 juin 2019 à 14:43:11

              jeremie05 a écrit:

              oui desole j'ai oublie de mettre ce commentaire 

              oui mais du coup les 2 barres || veulent bien dire 'ou bien ' ?

              Je voudrais dire:  tant que continuer n'est pas égal a 1 ou bien que continuez n'est pas égal a 2 alors continuez la boucle

              -
              Edité par jeremie05 il y a 36 minutes


              Si tu veux vérifier a la fois que continuez n'est pas égal a 1 ni a 2:

              while (continuez == 1 || continuez == 2)

              Si continuez = 1, la premiere condition est vraie donc la boucle reprend.

              Si continuez = 2, la deuxieme condition est vraie donc la boucle reprend.

              Si continuez = 3+, ni l'une ni l'autre condition n'est vraie donc on sort de la boucle.

              -
              Edité par ChristopherFargere 15 juin 2019 à 14:43:51

              • Partager sur Facebook
              • Partager sur Twitter
                15 juin 2019 à 14:57:28

                Ha oui super j'ai compris :)

                il faut tapez ca 

                while (continuez !=1 && continuez != 2 );

                Merci encore ;)

                -
                Edité par jeremie05 15 juin 2019 à 15:07:21

                • Partager sur Facebook
                • Partager sur Twitter
                  15 juin 2019 à 15:13:48

                  jeremie05 a écrit:

                  Ha oui super j'ai compris :)

                  il faut tapez ca 

                  while (continuez !=1 && continuez != 2 );

                  Merci encore ;)

                  -
                  Edité par jeremie05 il y a 4 minutes


                  Bah non... Je peux pas faire plus que te donner la réponse.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 juin 2019 à 15:25:37

                    Oui, c'est cela !

                    ChristopherFargere, tu as pris le problème à l'envers !

                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 juin 2019 à 15:31:20

                      jeremie05 a écrit:

                      oui mais du coup les 2 barres || veulent bien dire 'ou bien ' ?

                      Je voudrais dire:  tant que continuer n'est pas égal a 1 ou bien que continuez n'est pas égal a 2 alors continuez la boucle

                      Attention, c'est faux. « || » signifie « ou inclusif », c'est-à-dire : si l'un ou l'autre ou les deux est vrai.

                      Il n'existe pas de symbole pour le « ou exclusif » (ou bien l'un, ou bien l'autre). Je sais qu'en Basic on a OR et XOR, par exemple. Mais pas en C.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 juin 2019 à 16:06:16

                        rouloude a écrit:

                        Oui, c'est cela !

                        ChristopherFargere, tu as pris le problème à l'envers !


                        Ah oui my bad, je viens de relire ce que jeremy05 voulait faire.:ange:

                        Juste pour precision, il existe bien un XOR mais c'est un operateur bitwise:

                        a ^ b ==> a XOR b :)

                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 juin 2019 à 16:10:18

                          Alors attention pour le xor l'opérateur ^ est un opérateur ou exclusif bit à bit !
                          • Partager sur Facebook
                          • Partager sur Twitter

                          impossible de sortir de la boucle

                          × 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