Partage
  • Partager sur Facebook
  • Partager sur Twitter

boucle inexpliquable O_o

Sujet résolu
    24 juillet 2006 à 22:51:45

    Salut à tous, mon titre n'est pas très claire alors je vais tacher de m'expliquer concisement :D

    Je me suis amuser à faire un programme qui converti les francs en euros et vice versa.

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main(int argc, char *argv[])
    {
      char continuer;
      char choix;
      char action;
      double euros;
      double francs;
      do
      {
        printf("Choisissez le type de convertisseur\n");
        printf("1. Francs => Euros\n");
        printf("2. Euros => Francs\n");
        printf("Votre choix :");
        scanf("%ld", &choix);
          if(choix == 1)
          {
            printf("Entrez un prix en francs :");
            scanf("%lf", &francs);
            euros = francs/6.55957;
            printf("%lf francs donne environ %lf euros\n\n", francs, round(euros));
            printf("Entrez \"1\" pour continuer ou une autre touche pour quitter :");
            scanf("%ld", &action);
            if(action == 1)
            {
              continuer = 1;
            }
            else
            {
              system("EXIT");
            }
          }
          else if(choix == 2)
          {
            printf("Entrez un prix en euros :");
            scanf("%lf", &euros);
            francs = euros*6.55957;
            printf("%lf euros donne environ %lf francs\n\n", euros, round(francs));
            printf("Entrez \"1\" pour continuer ou une autre touche pour quitter :");
            scanf("%ld", &action);
            if(action == 1)
            {
              continuer = 1;
            }
            else
            {
              system("EXIT");
            }
          }
          else
          {
            printf("Erreur : Vous devez entrer 1 ou 2 !");
            continuer = 1;
          }
      }while(continuer);
      system("PAUSE");     
      return 0;
    }


    Quand j'execute, tout va bien jusqu'à ce que le programme affiche
    Entrez "1" pour continuer ou une autre touche pour quitter :


    si je met 1 tout va bien : ça recommence :D

    sinon (si je te tape autre chose que 1) ça fait une boucle infini et mon programme défile à toute vitesse

    voici le lieu du bug :
            if(action == 1)
            {
              continuer = 1;
            }
            else
            {
              system("EXIT");
            }
    (enfin je pense :euh: )

    Merci d'avance ^^
    • Partager sur Facebook
    • Partager sur Twitter
    Envie de mettre les mains dans le cambouis ? Passez à Funtoo GNU/Linux. DO IT!
      24 juillet 2006 à 23:02:59

      Salut,
      action est un caractère, donc dans le scanf tu dois mettre %c. De même, lorsque tu le compare avec 1 tu dois mettre '1'.

      Le bout de code corrigé :
              printf("Entrez \"1\" pour continuer ou une autre touche pour quitter :");
              scanf("%c", &action); // %c car action est un caractère
              if(action == '1') // la encore c'est un caractère
              {
                continuer = 1;
              }
              else
              {
                continuer = 0; // on évite la commande system qui a rien à faire ici
              }
      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2006 à 23:04:17

        Qu'est ce qui défile à toute vitesse ?
        • Partager sur Facebook
        • Partager sur Twitter
          24 juillet 2006 à 23:09:54

          Citation : Fradow

          Salut,
          action est un caractère, donc dans le scanf tu dois mettre %c. De même, lorsque tu le compare avec 1 tu dois mettre '1'.

          Le bout de code corrigé :

                  printf("Entrez \"1\" pour continuer ou une autre touche pour quitter :");
                  scanf("%c", &action); // %c car action est un caractère
                  if(action == '1') // la encore c'est un caractère
                  {
                    continuer = 1;
                  }
                  else
                  {
                    continuer = 0; // on évite la commande system qui a rien à faire ici
                  }

          non justement, j'ai mit ça avant :
                  printf("Entrez \"c\" pour continuer ou une autre touche pour quitter :");
                  scanf("%c", &action); // %c car action est un caractère
                  if(action == 'c') // la encore c'est un caractère
                  {
                    continuer = 1;
                  }
                  else
                  {
                    system("EXIT"); // on évite la commande system qui a rien à faire ici
                  }

          ça fermet automatique la fenêtre quelque soit la le chararctère entré :colere2:

          parcontre le coup du continuer = 0 je vais essayer :D
          • Partager sur Facebook
          • Partager sur Twitter
          Envie de mettre les mains dans le cambouis ? Passez à Funtoo GNU/Linux. DO IT!

          boucle inexpliquable O_o

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown