Comment Répéter un programme

Fermé
faresk93 Messages postés 18 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014 - 12 févr. 2013 à 21:19
faresk93 Messages postés 18 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014 - 14 févr. 2013 à 12:23
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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 févr. 2013 à 21:56
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 mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014
12 févr. 2013 à 22:13
encore, ça marche pas
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 févr. 2013 à 22:35
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 mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014
12 févr. 2013 à 22:45
#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 samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
12 févr. 2013 à 23:06
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 mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014
13 févr. 2013 à 10:35
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 samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
13 févr. 2013 à 10:56
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 mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014
13 févr. 2013 à 11:30
ça marche pas aussi mon ami, il recommence même en saisissant 'n' ou 'N'.
0
scinarf Messages postés 1119 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
13 févr. 2013 à 13:23
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 mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014
13 févr. 2013 à 13:52
non ça marche encore pas, aidez moi svp !!!
0
scinarf Messages postés 1119 Date d'inscription samedi 18 novembre 2006 Statut Membre Dernière intervention 25 septembre 2014 252
13 févr. 2013 à 16:23
J'ai testé ce programme et chez moi il marche correctement ... tu utilises quel IDE ?
0
faresk93 Messages postés 18 Date d'inscription mardi 12 février 2013 Statut Membre Dernière intervention 10 février 2014
13 févr. 2013 à 16:43
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