Comment Répéter un programme

faresk93 Messages postés 22 Statut Membre -  
faresk93 Messages postés 22 Statut Membre -
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

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
    1. faresk93 Messages postés 22 Statut Membre
       
      encore, ça marche pas
      0
    2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
    3. faresk93 Messages postés 22 Statut Membre
       
      #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
    4. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      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
    5. faresk93 Messages postés 22 Statut Membre
       
      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
  2. scinarf Messages postés 1183 Statut Membre 294
     
    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
    1. faresk93 Messages postés 22 Statut Membre
       
      ça marche pas aussi mon ami, il recommence même en saisissant 'n' ou 'N'.
      0
    2. scinarf Messages postés 1183 Statut Membre 294
       
      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
    3. faresk93 Messages postés 22 Statut Membre
       
      non ça marche encore pas, aidez moi svp !!!
      0
    4. scinarf Messages postés 1183 Statut Membre 294
       
      J'ai testé ce programme et chez moi il marche correctement ... tu utilises quel IDE ?
      0
    5. faresk93 Messages postés 22 Statut Membre
       
      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