Boucle avec une variable booléen

Résolu/Fermé
leprogrammeur Messages postés 131 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 1 décembre 2016 - 14 avril 2014 à 18:44
ily fly Messages postés 3 Date d'inscription samedi 14 décembre 2013 Statut Membre Dernière intervention 28 mai 2014 - 28 mai 2014 à 14:45
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

thelucas24300 Messages postés 153 Date d'inscription lundi 7 mai 2012 Statut Membre Dernière intervention 18 décembre 2017 19
14 avril 2014 à 18:46
Incrémenter une booleen ? mais elle vaut vrai ou faux normalement
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
14 avril 2014 à 18:58
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
0
leprogrammeur Messages postés 131 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 1 décembre 2016
14 avril 2014 à 19:25
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);
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 avril 2014 à 22:12
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,
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 15/04/2014 à 14:07
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
0
leprogrammeur Messages postés 131 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 1 décembre 2016
16 avril 2014 à 18:08
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
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 16/04/2014 à 18:59
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
0
ily fly Messages postés 3 Date d'inscription samedi 14 décembre 2013 Statut Membre Dernière intervention 28 mai 2014
19 avril 2014 à 17:25
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;
}
0
leprogrammeur Messages postés 131 Date d'inscription jeudi 8 décembre 2011 Statut Membre Dernière intervention 1 décembre 2016
27 mai 2014 à 01:12
merci ily fly
0
ily fly Messages postés 3 Date d'inscription samedi 14 décembre 2013 Statut Membre Dernière intervention 28 mai 2014
28 mai 2014 à 14:45
pas de quoi ^^
0