Comment Répéter un programme

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. 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. ça marche pas aussi mon ami, il recommence même en saisissant 'n' ou 'N'.
    2. 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.
    3. non ça marche encore pas, aidez moi svp !!!
    4. J'ai testé ce programme et chez moi il marche correctement ... tu utilises quel IDE ?
    5. 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' !
  2. Contributeur
    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. encore, ça marche pas
    2. Contributeur
      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é").
    3. #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'
    4. Contributeur
      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'));
    5. 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