Boucle avec une variable booléen

Résolu
Bonjour,
je viens encore par ce canal poser une question.
Comment coder en C, enfin d'obtenir une boucle qui s'exécute à chaque fois que vous incrémentez la variable booléen de 1 pour dire continuer ou 0 pour dire arrêter. Je pense que c'est possible q'avec la boucle do....while, car il faut que le programme s'exécute au moins une fois.
Merci d'avance

4 réponses

  1. Vous pouvez faire:

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

    int main(int argc, char *argv[])
    {
    int compteur=1;

    while(compteur)
    {
    //Instruction à exécuté
    printf("Voulez-Vous comtinuer?\n");
    scanf("%i",&compteur);
    }

    system("PAUSE");
    return 0;
    }
    1. merci ily fly
  2. Contributeur
    Salut leprogrammeur,

    En C "faux" est 0, et "vrai" toute autre valeur que 0.

    Donc, il suffit d'écrire
    #include <stdio.h>
    
    int main(void)
    {
        int continuer = 0;
        do {
            printf("Je fais quelque chose.\n");
            /* insérer ici le code mettant la variable
             * "continuer" à autre chose que 0
             * sinon, cette boucle ne s'exécute qu'une
             * fois, et (re)mettant à 0 quand la
             * boucle doit s'arrêter */                                            
        } while (continuer);
        return 0;
    }


    Dal
    1. voici ce que je compte faire
      int main()

      {
      int pou;
      do
      {
      printf("Hello");
      printf("voulez vous encore afficher hello?")
      scanf("%d",pou);
      }while (pou ==0);
      }
    2. Contributeur
      printf("voulez vous encore afficher hello?")
      Il manque un point virgule

      scanf("%d",pou);
      Il manque le & => scanf("%d",&pou);

      Et il manque le return 0;

      Pour les prochaines fois, merci d'utiliser la balise "code" situé à droite du bouton "souligné" et choisir "C" dans la liste déroulante.

      Cdlt,
    3. Contributeur
      Hormis le nom de variable
      int pou;
      dont je ne saisis pas la pertinence, outre les remarques de fiddy, il manque aussi un
      \n
      à la fin de la chaîne.

      Et à moins de jouer aux devinettes, comment l'utilisateur sait-il qu'il doit taper le chiffre 0 pour sortir de ta boucle ? Il faudrait le lui dire.

      Par ailleurs, un
      "oui"
      ou
      'o'
      (voire
      "yes"
      ou
      'y'
      ), ou
      "non"
      ou
      'n'
      est plus habituel pour une interface utilisateur en mode console (donc demander un %s dans le scanf, ou utiliser un fgets avec stdin, avec une taille appropriée de variable pour accueillir les différentes réponses valides sous la forme de chaîne C).

      Il ne faut pas confondre les valeurs de ce qui est vrai ou faux en C ou évalué comme vrai ou faux dans une condition en C, et la façon dont tu gères la communication avec ton utilisateur (de plus, même en ce sens là, 0 signifierait "faux", ce qui se rapprocherai plutôt de
      "non"
      , et tu trompes là aussi ton utilisateur).

      Dal
    4. merci fiddy pour tes rémarques.
      Dal j'ai fais un
      printf("voulez- vous encore afficher\"HELLO\" \n")

      puis il y a un
      scanf("%d", &pou)
      pou est une variable que recoit 1 pour oui et 0 pour non. c'est pourqoui j'ai fais
      int pou;
      .
      Merci d'avance
    5. Contributeur
      salut leprogrammeur,

      puis il y a un scanf("%d", &pou) pou est une variable que recoit 1 pour oui et 0 pour non. c'est pourqoui j'ai fais int pou;

      oui, j'ai compris, mais tu n'as pas saisi :

      - que je pensais que "pou" n'est pas un nom de variable très explicite, du moins dans les langues que je connais (par exemple : reponse ou choix, ou answer ou choice me sembleraient plus évidents) : là je pense aux relecteurs de ton code source
      - que je pensais qu'un utilisateur aura plus envie de répondre "oui" ou "non", plutôt que "0" ou "1", surtout si tu ne lui dis pas quoi faire : là je pense aux utilisateurs de ton programme compilé

      Dal
  3. Incrémenter une booleen ? mais elle vaut vrai ou faux normalement