Programme en C : Boucle Do ... While

Sunshiine -  
 Sunshiine -
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
Configuration: Windows Vista
Firefox 3.0.3

6 réponses

  1. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. Sunshiine
       
      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
  3. Sunshiine
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Sunshiine
     
    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
  6. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    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
    1. Sunshiine
       
      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