Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème de boucle

ne marche pas correctement.

    29 juillet 2007 à 10:54:26

    bonjour, voila je m'exerce à faire un petit programme, afin de revoir tout ce que j'ai vu depuis le début.
    le problème est que dans mon code, je fait une boucle DO WHILE, mais qui ne marche pas.
    pourriez vous regarder s'il vous plaie.

    cordialement.

    <code type="c">
    #include <stdio.h>
    #include <stdlib.h>

    int main(int argc, char *argv[])
    {
    char prenom[30];
    const char motDePasse[] = {"lapeste"};
    char motDePasseEntre[20];

    printf("/////////////////// BIENVENUE SUR LA CALCULATRICE ////////////////////\n");

    printf("\nveuillez saisir votre prenom, ainsi que le mot de passe\n\n");

    do
    {
    printf("PRENOM : ");
    scanf("%s", prenom);
    printf("MOT DE PASSE : ");
    scanf("%s", motDePasseEntre);
    }while(motDePasseEntre != motDePasse);


    return 0;
    }
    • Partager sur Facebook
    • Partager sur Twitter
      29 juillet 2007 à 11:09:51

      Salut,
      Ce que tu peux faire c'est comparer les deux chaines avec strcmp ;)
      • Partager sur Facebook
      • Partager sur Twitter
        29 juillet 2007 à 11:14:38

        oui je comprend bien, mais pourquoi quand je rentre le mot de passe correct, la boucle DO While recommence et me redemmande le prénom et le mot de passe?
        normalement le programme devrait s'arreter si le mot de passe est exacte, et me redemander les information si le mot de passe et inexacte.
        • Partager sur Facebook
        • Partager sur Twitter
          29 juillet 2007 à 11:22:53

          Salut,

          Tu ne sors jamais de la boucle parce que ta condition ne fait pas ce que tu crois :
          while(motDePasseEntre != motDePasse);

          compare l'adresse du premier caractère de motDePasseEntre avec celle du premier caractère de motDePasse, et ces adresses sont naturellement toujours différentes.

          En fait, quand Zoizoboules te dit de comparer les chaînes avec strcmp (3) (ce qui est la bonne façon de comparer des chaînes de caractères en C), ce n'est pas une simple suggestion en passant, c'est la réponse à ton problème. ;)
          • Partager sur Facebook
          • Partager sur Twitter
            29 juillet 2007 à 11:44:30

            bon, j'ai alors modifier mon code avec la fonction STRCMP, mais cela ne résoud que de motier mon problème, car si la personne rentre un mot de passe faux, le programme ne lui redemande pas les informations (PRENOM, MOT DE PASSE), alors comment faire puisque la boucle WHILE ou DO WHILE ne fonctionne pas avec les chaînes.

            je vous remercie.

            <code type="c">
            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>

            int main(int argc, char *argv[])
            {

            char prenom[30];
            const char motDePasse[] = {"lapeste"};
            char motDePasseEntre[20];

            printf("/////////////////// BIENVENUE SUR LA CALCULATRICE ////////////////////\n");

            printf("\nveuillez saisir votre prenom, ainsi que le mot de passe\n\n");



            printf("PRENOM : ");
            scanf("%s", prenom);
            printf("MOT DE PASSE : ");
            scanf("%s", motDePasseEntre);

                if(strcmp(motDePasse, motDePasseEntre)==0)
                {
                printf("le mot de passe est correct\n");
                }
                else
                {
            printf("le mot de passe n'est pas correct\n");
                }



            return 0;
            }
            • Partager sur Facebook
            • Partager sur Twitter
              29 juillet 2007 à 11:47:34

              Non, tu peux utiliser strcmp comme test dans ta boucle while essaye-ça :


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

              int main(int argc, char *argv[])
              {
              char prenom[30];
              const char motDePasse[20] = {"lapeste"};
              char motDePasseEntre[20];

              printf("/////////////////// BIENVENUE SUR LA CALCULATRICE ////////////////////\n");

              printf("\nveuillez saisir votre prenom, ainsi que le mot de passe\n\n");

              do
              {
              printf("PRENOM : ");
              scanf("%s", &prenom);
              printf("MOT DE PASSE : ");
              scanf("%s", &motDePasseEntre);
              }while(strcmp (motDePasseEntre,motDePasse) != 0);

              printf("\n\nMot de passe correct !!");

              system("PAUSE");
              return 0;
              }
               


              Voila !!
              • Partager sur Facebook
              • Partager sur Twitter
                29 juillet 2007 à 12:31:13

                const char motDePasse[] = {"lapeste"};

                Est il necessaire de mettre des accolades:
                --> "lapeste"
                • Partager sur Facebook
                • Partager sur Twitter
                  29 juillet 2007 à 12:49:13

                  Je pense que tu as raison monkprogrammer, et moi, je mets toujours la valeur du tableau entre crochets...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  problème de 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