Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle for infinie

Sujet résolu
    10 août 2022 à 20:26:22

    Bonsoir, j'ai un petit soucis de codage sur une boucle for, j'ai du mal à comprendre mon erreur ce qui fait que je m'en remet à ce forum.

    #define oui 1
    
    #define non 0
    
    typedef struct Personne Personne;
    struct Personne
    {
        char prenom[50];
        char nom[50];
        char adresse[100];
        int age;
        int statutEtudiant;
    };
    
    
    int main(int argc, char *argv[])
    {
    
        Personne utilisateur;
        printf("Quel est ton prenom ?\n");
        scanf("%s", utilisateur.prenom);
        printf("Quel est ton nom ?\n");
        scanf("%s", utilisateur.nom);
            do
            {
            printf("es-tu etudiant (repondre par oui ou non)?\n");
            scanf("%d", &utilisateur.statutEtudiant);
            printf("%d", utilisateur.statutEtudiant);
            }while(utilisateur.statutEtudiant != 1 || utilisateur.statutEtudiant != 0);
            if(utilisateur.statutEtudiant == 1)
            {
                printf("tu t'appelles donc %s %s et tu es etudiant", utilisateur.prenom, utilisateur.nom);
            }
            else if(utilisateur.statutEtudiant == 0)
            {
                printf("tu t'appelles donc %s %s et tu n'es pas etudiant", utilisateur.prenom, utilisateur.nom);
            }
    
    
    
    
    return 0;
    }

    Le programme vient d'un exercice dans le chapitre des structures que j'ai essayé de compléter par moi-même. Le soucis vient de la boucle for que j'ai essayer de placer si quelqu'un venait à taper quelque chose d'autre que oui ou non afin qu'il repasse par le scanf mais le soucis c'est que la boucle devient infinie et ne repasse pas par le scanf uniquement dans le printf "es tu etudiant?". 

    Merci à ceux qui prendront la peine de lire mon message et de m'aider a résoudre ce soucis de débutant :euh:

    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2022 à 20:37:46

      Hello,

      Ligne 14: pas || mais && . Si la variable vaut 0, elle ne peut pas valoir 1 !

      Mais j'écrirais

      do {
          ....
      } while (x<0 || x>1);

       Edit: et le message ligne 11 devait être: répondre par 1 (oui) ou 0 (non)

      -
      Edité par edgarjacobs 10 août 2022 à 20:47:02

      • Partager sur Facebook
      • Partager sur Twitter

      On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

        10 août 2022 à 21:08:34

                printf("es-tu etudiant (repondre par oui ou non)?\n");

        Je rajouterais qu'apprès avoir modifié la condition du while ton code fonctionnera que si tu répond par 1 ou 0 mais pas par "oui" ou 'non".

        Le define ne fonctionne qu'à la compilation pas à l'exécution !

        • Partager sur Facebook
        • Partager sur Twitter
        ...
          10 août 2022 à 21:31:26

          Merci edgarjacobs la correction était effectivement juste, et ton edit m'est bien utile, je dois apprendre à prendre les bonnes habitudes. Pour la ligne 11 j'ai plutôt utilisé une chaine de caractère "réponse" et j'ai placé un strcmp dans le if de la ligne 15 sous le conseil d'un autre utilisateur.

          Merci aussi a rouloude, je ne savais pas ce que tu m'as expliquer sur le define et pour l'autre point de ton message, comme dis plus haut je m'en suis sorti avec une chaine de caractère. J'imagine que c'est des erreurs que je dois faire pour m'amélioré ^^'

          • Partager sur Facebook
          • Partager sur Twitter
            5 septembre 2022 à 14:00:26

            bonjour s;il vous plait je voudrais savoir a partir de quelle application monsieur philippe fait sa programmation
            • Partager sur Facebook
            • Partager sur Twitter
              6 septembre 2022 à 4:46:30

              @LoicBroy:
              PhilippeClosset1 ne reviendra peut-être pas s'il ne vérifie pas ses interventions.
              • Partager sur Facebook
              • Partager sur Twitter

              Le Tout est souvent plus grand que la somme de ses parties.

                22 octobre 2022 à 16:15:49

                Excusez moi pour mon absence et pour ne pas avoir répondu, 

                Si ça vous intéresse toujours j'utilise CodeBlocks.

                • Partager sur Facebook
                • Partager sur Twitter
                  26 novembre 2022 à 17:17:15

                  Bonjour j'ai une question. Je cherche un programme en C qui me permettra de faire leparrainage des élèves de deuxième année et de première année.  Merci d'avance
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2022 à 17:27:32

                    @BabacarSow9: crée ton propre sujet, mais n'espère pas que quelqu'un t'écrive ton programme.
                    • Partager sur Facebook
                    • Partager sur Twitter

                    On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

                    Boucle for infinie

                    × 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