Programme en C : Boucle Do ... While

Fermé
Sunshiine - 19 oct. 2008 à 17:31
 Sunshiine - 19 oct. 2008 à 19:06
Bonjour,

Je suis étudiant en Informatique et j'ai mes premiers cours de programmation, notamment en C. Je suis un peu perdu j'essaie de faire un programme qui répond à certaine condition. Le programme est juste et fonctionne correctement mais je ne comprends pas comment utiliser Do .. While pour recommencer le programme.. J'espère être compréhensible..


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

void main()
{
char Ciel, Precipitation, Vent, Recommencer;

int Traitement;



printf(" *************************\n");
printf(" *Le touriste en vacances*\n");
printf(" *************************\n");

do
{

Traitement=0;
printf("Le ciel est-il bleu ou couvert? (B,C)\n");
fflush(stdin);
scanf("%c",&Ciel);
printf("\n");
printf("Y a-t-il du soleil ou de la pluie? (S,P)\n");
fflush(stdin);
scanf("%c",&Precipitation);
printf("\n");
printf("Quelle est l'origine du vent? (N,E,S,O)\n");
fflush(stdin);
scanf("%c",&Vent);
printf("\n");


if (((Ciel=='B')||(Ciel=='b'))||((Ciel=='C'&&Precipitation=='N'&&Vent=='E')||(Ciel=='c'&&Precipitation=='n'&&Vent=='e')))
{
Traitement=1;
}
if (Traitement=1)
{
printf("Notre touriste reste\n");
}
else
{
printf("Notre touriste rentre chez lui\n");
}

printf("\n");

printf("Voulez-vous recommencer? (Y/N)\n");
scanf("%c",&Recommencer);

}while (Recommencer='y'||Recommencer=='Y');

}


Voilà la bête :D

Merci d'avance

6 réponses

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
19 oct. 2008 à 18:18
T'as aussi un soucis là :
if (Traitement=1)

Ton programme s'arrête après que tu aies tapé ton Y ou N ?
1
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
19 oct. 2008 à 18:46
Oui, il y a l'erreur que kilian t'a signalé dans ta boucle while.
Et en plus, la fameuse erreur du scanf("%c");
Pour rester homogène avec ce que tu as fait, je rajouterai un fflush(stdin); avant scanf("%c",&Recommencer);

Sinon juste pour rappeler fflush(stdin), n'est pas garantit de marcher ;)
1
Etat des précipitations, pluie ou non, et le sens du vent, nord
sud,est,ouest
en fonction de ces données :
si ciel bleu, il reste
si il pleut il part s'il fait couvert sans pleuvoir et que le vent viens de l'est, il reste.
En toute autre circonstance, il part.
0
Merci beaucoup j'ai modifié ce '=' manquant mais maintenant mon programme s'arrête après avoir appuyer sur une touche .. Le ('Press Any Key To Continue.. )

Désolé d'être boulet :(
0
Oui :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Merci beaucoup j'ai modifié ce '=' manquant mais maintenant mon programme s'arrête après avoir appuyer sur une touche .. Le ('Press Any Key To Continue.. )

Désolé d'être boulet :(
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 527
19 oct. 2008 à 17:42
Salut,

Tu as oublié un signe "=", donc comme ta comparaison est en fait une affectation, la condition est toujours vraie (tant que tu n'affectes pas 0):
while (Recommencer=='y'||Recommencer=='Y'); 
-1
En fait voilà le but de mon programme
/* l'etat des précipitations pluie ou non */
/* et le sens du vent, nord sud est, ouest */
/* en fonction de ces données : */
/* si ciel bleu, il reste */
/* si il pleut il part */
/* si il fait couvert sans pleuvoir et que le vent viens de l'est, il reste*/
/* en tout autre circonstance, il part
0