Partage
  • Partager sur Facebook
  • Partager sur Twitter

[c] Retour Else, scanf ne prends pas les chiffres.

    17 décembre 2005 à 18:15:21

    Bonjour,

    Au risque de passer pour un idiot je vous donne mon code, quelque chose cloche, c'est sencé être une mini calculette.


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

    int main(int argc, char *argv[])
    {
        char operation, chiffre1, chiffre2, resultat;
        printf("Choix de l'operation: \n\n");
        printf("1 - Addition.\n");
        printf("2 - Soustraction.\n");
        printf("3 - Multiplication.\n");
        scanf("%ld", &operation);
        printf("Choix du premier chiffre:\n");
        scanf("%ld", &chiffre1);
        printf("Choix du second chiffre:\n");
        scanf("%ld", &chiffre2);
       
        if(operation == 1)
        {
                     resultat = chiffre1 + chiffre2;
                     printf("%ld + %ld = %ld", chiffre1, chiffre2, resultat);
        }
        else if(operation == 2)
        {
             resultat = chiffre1 - chiffre2;
             printf("%ld - %ld = %ld", chiffre1, chiffre2, resultat);
        }
        else if(operation == 3)
        {
             resultat = chiffre1 * chiffre2;
             printf("%ld * %ld = %ld", chiffre1, chiffre2, resultat);
        }
        else
        {
            printf("N/A\n");
            printf("%ld, %ld, %ld, %ld\n",chiffre1, chiffre2, resultat, operation);
        }
     
      system("PAUSE");     
      return 0;
    }


    Désolé, je débute, lorsqu'on entre les chiffres il va toujours à else.
    Je pense qu'il y a un problème au premier scanf, mais je ne vois pas quoi :x

    Si vous pourriez m'aider afin de progresser ^^

    Je vous remerci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      17 décembre 2005 à 18:23:55

      tu déclares tes vars comme char et les scan comme long int.
      Change tes déclarations.

          else
          {
              printf("N/A\n");
              printf("%ld, %ld, %ld, %ld\n",chiffre1, chiffre2, resultat, operation);
          }


      ça c'est pas très malin. ton printf qui affiche les vars ne sert à rien, et en plus, imagine que resultat n'est pas été initialisé, te te retrouve avec un programme qui risque de planter dans le pire des cas, ou d'afficher nawak dans le meilleur.

      Puis un switch serais plus judicieux ici ;)
      • Partager sur Facebook
      • Partager sur Twitter
        17 décembre 2005 à 18:40:40

        ok, merci beaucoup =)
        Pour les vars qui servent a rien, je les avaient mises pour savoir ce qu'elles contenées, pour voir si c'était un problème avec les conditions ou avec le scanf.
        Je vais essayer avec switch, merci beaucoup :]
        • Partager sur Facebook
        • Partager sur Twitter

        [c] Retour Else, scanf ne prends pas les chiffres.

        × 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