Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle infini

Sujet résolu
    29 janvier 2025 à 14:28:46

    Salut!!

    voici l'énoncer d'un exercice que j'ai trouvé  sur Google et j'ai essayer de le résoudre  sauf que j'obtiens une boucle infini en compilant le code que j'ai écris.S'il vous plait comment puis-je arranger cela?  Merci d'avance !

    <<Demander à l’utilisateur combien font 2 fois 2 et répéter cette question aussi longtemps que la réponse est fausse.

    Ajouter le message "Faux, recommencez" à chaque fausse réponse, et "Bravo !" pour la bonne réponse.>>

    #include <stdio.h>
    int main()
    {
       int nombre =2;int resultat =0;
       printf("combien font 2*2? : ");
       scanf("%d",&resultat);
       
      while(resultat != 4)
       { 
         printf("combien font 2*2? \n");
         printf("Faux, recommencer");
       }
      if (resultat = 4)
        {
          printf("bravo\n");
         }
       return 0
    }
    • Partager sur Facebook
    • Partager sur Twitter
      29 janvier 2025 à 15:49:02

      Il y a beaucoup d'erreurs dans ton code :

      1) Pour la boucle while la valeur de résultat n'est jamais modifiée dans le corps de la boucle donc si elle est différente de 4 ça tourne indéfiniment.

      2) Le test d'égalité c'est == et non pas =

      3) Il manque le point virgule à la fin de la ligne 17

      • Partager sur Facebook
      • Partager sur Twitter
        30 janvier 2025 à 15:07:04

        salut,

        Merci pour votre disponibilité.

        • Partager sur Facebook
        • Partager sur Twitter
          2 février 2025 à 15:26:15

          rouIoude a écrit:

          Il y a beaucoup d'erreurs dans ton code :

          1) Pour la boucle while la valeur de résultat n'est jamais modifiée dans le corps de la boucle donc si elle est différente de 4 ça tourne indéfiniment.

          2) Le test d'égalité c'est == et non pas =

          3) Il manque le point virgule à la fin de la ligne 17

          Je me disais que printf("bravo") n'est pas dans la boucle while vu que j'avais fermé les accolades qui définissaient les instructions de la boucle.



          • Partager sur Facebook
          • Partager sur Twitter
            2 février 2025 à 15:37:23

            à ton avis,

            • que fait le bloc des lignes 9-12
               {
                 printf("combien font 2*2? \n");
                 printf("Faux, recommencer");
               }
            • qu'est ce qui se passe si on les répète ?

            Pour   if (resultat = 4),  il y a des subtilités de C qui rentrent en compte

            • resultat = 4 n'est pas une comparaison, mais est une affectation, qui met la valeur 4 dans la variable resultat
            • une affectation est aussi une expression qui retourne une valeur, la valeur affectée à la variable. Donc 4 ici.
            • un if prend comme paramètre une expression à résultat scalaire : entier (dont caractere), flottant ou pointeur. Cette expression est considérée comme vraie quand elle est différente de zero ou de NULL.
            • et conclusion, le corps du if sera toujours exécuté en sortant de la boucle. Si on en sort un jour.
            • Partager sur Facebook
            • Partager sur Twitter
              3 février 2025 à 8:51:09

              Ca confirme un peu ce que je disais un jour, pour les débutants :

              • on écrit le pseudo code en français
              • on le teste
              • on le traduit en C

              plutôt que de le faire directement, quand on ne comprend pas bien la signification de ce qu'on écrit.

              • Partager sur Facebook
              • Partager sur Twitter

              Le crayon la gomme et le papier sont les meilleurs outils du programmeur !

                3 février 2025 à 9:13:21

                Et surtout : on n'essaie pas de faire faire ses exercices par les participants d'un forum, en prétendant qu'on s'est mis à essayer après les avoir trouvés sur google comme ça par hasard.

                 On veut bien aider à apprendre à programmer, et justement, donner les solutions, ça n'aide pas à apprendre, au contraire même ça empêche/

                -
                Edité par michelbillaud 3 février 2025 à 17:44:42

                • Partager sur Facebook
                • Partager sur Twitter
                  3 février 2025 à 17:48:40

                  michelbillaud a écrit:

                  Et surtout : on n'essaie pas de faire faire ses exercices par les participants d'un forum, en prétendant qu'on s'est mis à essayer après les avoir trouvés sur google comme ca par hasard.

                   On veut bien aider à apprendre à programmer, et justement, donner les solutions, ça n'aide pas à apprendre, au contraire.

                  -
                  Edité par michelbillaud il y a environ 8 heures

                  J'apprend à programmer en suivant les cours sur openclassroom.C'est vraiment un exercice que j'ai trouvé sur google pour m'exercer et non un exercice donné par un professeur .Et vous avez raison je dois apprendre à trouver des solutions par moi même.

                  Merci pour le soutiens. 

                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 février 2025 à 17:53:28

                    Et donc, où en est le code de la solution ?   *

                    Parce qu'on a donné des éléments pour avancer vers une solution, on voudrait bien savoir comment ils ont été pris en compte, et si il y a besoin de corrections/explications supplémentaires.

                    -
                    Edité par michelbillaud 3 février 2025 à 17:54:55

                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 février 2025 à 18:05:14

                      michelbillaud a écrit:

                      Et donc, où en est le code de la solution ?   *

                      Parce qu'on a donné des éléments pour avancer vers une solution, on voudrait bien savoir comment ils ont été pris en compte, et si il y a besoin de corrections/explications supplémentaires.

                      -
                      Edité par michelbillaud il y a 3 minutes

                      #include <stdio.h>
                      int main()
                      {  int resultat =0;
                         while (resultat !=4)
                        {
                            printf("combien font 2*2? :");
                            scanf("%d",&resultat);
                         if (resultat != 4)
                          {
                            printf("Faux,recommencer");
                          }
                         }
                            printf("bravo");
                         returm o;
                      }


                      J'ai pu trouver une soulution

                      -
                      Edité par PierretteLafortuneVoufo 5 février 2025 à 13:11:32

                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 février 2025 à 18:38:18

                        Utilises le bouton code </> du forum pour poster ton code ! (tu peux modifier ton post, lien modifier en haut à droite du post).

                        Tu l'as bien fait lors de ton premier post !

                        • Partager sur Facebook
                        • Partager sur Twitter

                        Boucle infini

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        • Editeur
                        • Markdown