Comment Répéter un programme

faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -  
faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai essayé avec mon programme pour que ça se répète sous la demande de l'utlisateur mais en vain,
Voici mon code C :

#include<stdio.h>
#include<conio.h>
#include<stdbool.h>

main()
{

float temp;
char c;
bool ok=true;

while (ok==true)
{
printf("Write a temperature : ");
scanf("%f",&temp);
if (temp<=0)
printf("\nIce");
else
if (temp>0 && temp<=100)
printf("\nWater");
else
printf("\nSteam");

printf("\nRepeat ?");
printf("\nY/N : ");
do
scanf("%char",&c);
while((c=='y')||(c=='n'));

switch(c)
{
case('y') : break;
case('n') : ok=false;break;
default : break;
}

}

}


Quand j'exécute Ceci, quand je saisi y ou n il écrit "Write a temperature : " puis la réponse précédente et le curseur se met enfin sur Repeat Y/N.
Aidez-Moi SVP !



2 réponses

fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
scanf("%char",&c);
Mets plutôt : scanf("%c",&c); getchar();
Le getchar() est à mettre en plus pour vider le '\n' stocké dans le buffer clavier.
-1
faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
encore, ça marche pas
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Merci de reposter ton code avec les modifications demandées et en précisant les changements. N'oublie pas de mettre ton code entre deux balises "code" (à droite du bouton "souligné").
0
faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
#include<stdio.h>
#include<conio.h>
#include<stdbool.h>

main()
{

 float temp;
 char c;
 bool ok=true;

while (ok==true)
 {
    printf("Write a temperature : ");
    scanf("%f",&temp);
    if (temp<=0)
    printf("\nIce");
    else
    if (temp>0 && temp<=100)
    printf("\nWater");
    else
    printf("\nSteam");

    printf("\nRepeat ?");
    printf("\nY/N : \n");
    do
    {
    scanf("%c",&c);
    getchar();
    }
    while((c=='y')||(c=='n'));

    switch(c)
    {
       case('y') : break;
       case('n') : ok=false;break;
       default   : break;

    }

 }

}



Lorsque je l'exécute maintenant, ça marche bien sauf qu'il accepte toute réponse à la question Y/N ? et recommece le programme même avec la réponse 'n'
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Lorsque je l'exécute maintenant, ça marche bien sauf qu'il accepte toute réponse à la question Y/N ? et recommece le programme même avec la réponse 'n'
Ah, ça change tout :-).
while((c=='y')||(c=='n'));
Cela veut dire, on boucle tant que c vaut 'y' ou 'n'
Il faudrait plutôt, mettre : while( ! ((c=='y') || (c=='n'))); ou while ((c!='y') && (c!='n'));
0
faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Maintenant il n'accepte aucune réponse, et le programme ne se bloque ni il recommence !
Voici une image de ce que j'ai :
http://data.imagup.com/10/1175413833.png
0
scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   252
 
Bonjour,

Essayer avec ca, pas sur que ca fonctionne, je ne l'ai pas testé

main()
{

float temp;
char c;
bool ok=false;

while (ok==true)
{
printf("Write a temperature : ");
scanf("%f",&temp);
if (temp<=0)
printf("\nIce");
else
if (temp>0 && temp<=100)
printf("\nWater");
else
printf("\nSteam");

printf("\nRepeat ?");
printf("\nY/N : ");
scanf("%c",&c);
if (c == "N"||c == "n") ok= false;
}

}

voila qui devrait repeter le programme le temps que l'utilisateur n'a pas mis n ou N dans la commande "repeter"

Cordialement Scinarf
-1
faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
ça marche pas aussi mon ami, il recommence même en saisissant 'n' ou 'N'.
0
scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   252
 
J'ai fais les tests avec ca et ca marche chez moi.


main()
{

float temp;
char c;
bool ok=1;

while (ok)
{
printf("Write a temperature : ");
scanf("%f",&temp);
if (temp<=0)
printf("\nIce");
else
if (temp>0 && temp<=100)
printf("\nWater");
else
printf("\nSteam");

printf("\nRepeat ?");
printf("\nY/N : ");
scanf("%c",&c);
if (c == 'N'||c == 'n')
{
ok= 0;
}
}

}


Dis moi si ca marche par la suite.
0
faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
non ça marche encore pas, aidez moi svp !!!
0
scinarf Messages postés 1119 Date d'inscription   Statut Membre Dernière intervention   252
 
J'ai testé ce programme et chez moi il marche correctement ... tu utilises quel IDE ?
0
faresk93 Messages postés 18 Date d'inscription   Statut Membre Dernière intervention  
 
Je l'ai codé avec Code Blocks, et je l'ai essayé maintenant avec Dev-c++
J'ai pas dit que le programme ne marche pas, si mais il recommence toujours avec n'importe quel caractère même le 'n' !
0