Partage
  • Partager sur Facebook
  • Partager sur Twitter

[c] Mon code ne marche pas

Un peu d'aide s'il vous plait

Sujet résolu
    4 novembre 2006 à 12:22:21

    Bonjour, je suis en train de lire le tuto de C/C++ de M@teo.
    J'ai un mini projet: faire une calculatrice 4fonctions (+, -, *, /)
    Voici mon code: (je n'en suis qu'a l'addition, mais j'ai déjà un problème)
    /*  Création d'une calculatrice avec 4 fonctions
        Auteur: Bib0u
        Aide: tuto de C/C++ du Site de Zér0 */

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

            // I. On "entre" dans la fonction "main"

    int main(int argc, char *argv[])
    {
            // II. Déclaration des variables
      double nombreUn =0, nombreDeux =0, resultat =0;
      char choixMenu;
     
            // III. Menu
      do
        {
            printf ("\n\t\t\t.:\"~Calculator 3.000~\":.\n\n");
            printf ("\t1. Additionner\n");
            printf ("\t2. Soustraire\n");
            printf ("\t3. Multiplier\n");
            printf ("\t4. Diviser\n");
            printf ("\n Quel est votre choix? ");
            scanf ("%ld", &choixMenu);
        } while (choixMenu <1 || choixMenu >4);
       
           // V. Les condition, ici, "switch"
      switch (choixMenu)
      {
             case 1:
                  resultat = nombreUn + nombreDeux;             
                  printf ("\n\n Quel est le premier nombre? ");
                  scanf ("%ld", &nombreUn);
                  printf ("\n Et le deuxieme? ");
                  scanf ("%ld", &nombreDeux);
                  printf ("\n %ld + %ld = %ld\n\n",nombreUn, nombreDeux, resultat);
      }
      system("PAUSE");     
      return 0;
    }

    Mon problème:
    Quand la console affiche l'opération, le premier chiffre choisis marche, mais le deuxième et remplacé par un zéro et le résultat est remplacé par le deuxième chiffre.
    J'aimerais avoir de l'aide parce que je suis bluffé, et apparemment, je ne vois pas mon erreur, même si elle est bête est simple.
    Voilà, merci.
    • Partager sur Facebook
    • Partager sur Twitter
      4 novembre 2006 à 12:24:16

      Salut. Ton erreur vient du fait que tu utilises le mauvais code de format pour tes variables. pour choixMenu utilise plutôt un int et le code de format "%d" dans tes scanf et printf. Pour les double, il faut utiliser "%lf" car "%ld" attend l'adresse d'un long et non d'un double. Voilà, rectifie ça.

      EDIT: Il y a aussi le problème signalé par el_rere, bien vu ;)
      • Partager sur Facebook
      • Partager sur Twitter
        4 novembre 2006 à 12:26:02

        Salut :)
        Le problème vient du fait que tu fais la somme des nombres avant même de demander leur valeur à l'utilisateur :
        switch (choixMenu)
          {
                 case 1:             
                      printf ("\n\n Quel est le premier nombre? ");
                      scanf ("%ld", &nombreUn);
                      printf ("\n Et le deuxieme? ");
                      scanf ("%ld", &nombreDeux);
                      resultat = nombreUn + nombreDeux;// il fallait le mettre ici
                      printf ("\n %ld + %ld = %ld\n\n",nombreUn, nombreDeux, resultat);
                      break; //Tu avais oublié de breaker
          }


        EDIT=> H.S. : Tu avais mal lu ma proposition, j'avais bien placé resultat = nombreUn+nombreDeux;
        • Partager sur Facebook
        • Partager sur Twitter
          4 novembre 2006 à 12:32:32

          Je teste ces propositions tout de suite...
          ...
          C'est rectifié:
          /*  Création d'une calculatrice avec 4 fonctions
              Auteur: Bib0u
              Aide: tuto de C/C++ du Site de Zér0 */

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

                  // I. On "entre" dans la fonction "main"

          int main(int argc, char *argv[])
          {
                  // II. Déclaration des variables
            long nombreUn =0, nombreDeux =0, resultat =0;
            int choixMenu;
           
                  // III. Menu
            do
              {
                  printf ("\n\t\t\t.:\"~Calculator 3.000~\":.\n\n");
                  printf ("\t1. Additionner\n");
                  printf ("\t2. Soustraire\n");
                  printf ("\t3. Multiplier\n");
                  printf ("\t4. Diviser\n");
                  printf ("\n Quel est votre choix? ");
                  scanf ("%ld", &choixMenu);
              } while (choixMenu <1 || choixMenu >4);
             
                 // V. Les condition, ici, "switch"
            switch (choixMenu)
            {
                   case 1:             
                        printf ("\n\n Quel est le premier nombre? ");
                        scanf ("%d", &nombreUn);
                        printf ("\n Et le deuxieme? ");
                        scanf ("%d", &nombreDeux);
                        printf ("\n %d + %d = %d\n\n",nombreUn, nombreDeux, resultat);
                        resultat = nombreUn + nombreDeux;
                        break;
            }
            system("PAUSE");     
            return 0;
          }

          Mais ça ne marche toujours pas :(
          EDIT: code modifié, maintenant, l'ordre est bon, mais le resultat reste 0.
          • Partager sur Facebook
          • Partager sur Twitter
            4 novembre 2006 à 12:36:26

            Arf, essaie de réfléchir et de vérifier le comportement de ton programme. Ton affectation se situe après ton printf, ça ne risque pas de marcher :


            /*  Création d'une calculatrice avec 4 fonctions
                Auteur: Bib0u
                Aide: tuto de C/C++ du Site de Zér0 */

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

                    // I. On "entre" dans la fonction "main"

            int main(void)
            {
                    // II. Déclaration des variables
              int nombreUn = 0, nombreDeux = 0, resultat = 0;
              int choixMenu;
             
                    // III. Menu
              do
                {
                    printf ("\n\t\t\t.:\"~Calculator 3.000~\":.\n\n");
                    printf ("\t1. Additionner\n");
                    printf ("\t2. Soustraire\n");
                    printf ("\t3. Multiplier\n");
                    printf ("\t4. Diviser\n");
                    printf ("\n Quel est votre choix? ");
                    scanf ("%d", &choixMenu);
                } while (choixMenu <1 || choixMenu >4);
               
                   // V. Les condition, ici, "switch"
              switch (choixMenu)
              {
                     case 1:             
                          printf ("\n\n Quel est le premier nombre? ");
                          scanf ("%d", &nombreUn);
                          printf ("\n Et le deuxieme? ");
                          scanf ("%d", &nombreDeux);
                          resultat = nombreUn + nombreDeux;
                          printf ("\n %d + %d = %d\n\n",nombreUn, nombreDeux, resultat);
                          break;
              }
              getchar();   
              return 0;
            }
            • Partager sur Facebook
            • Partager sur Twitter
              4 novembre 2006 à 12:37:08

              scanf();

              :-°

              Enfin, tu ne sais pas que c'est horrible scanf(); je suppose ?
              Va voir là : Ici

              Autrement, tu as des erreurs ou ça bug pendant l'execution ?
              • Partager sur Facebook
              • Partager sur Twitter
                4 novembre 2006 à 13:20:07

                Comme je l'avais dis:

                Citation : Moi

                je ne vois pas mon erreur, même si elle est bête est simple.


                Mais le problème est réglé, merci tout le monde!
                • Partager sur Facebook
                • Partager sur Twitter
                  4 novembre 2006 à 13:34:07

                  Re :)
                  Dans ce cas => le tag résolu ;)

                  EDIT => Pourtant je l'avais pas vu :euh: ...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  [c] Mon code ne marche pas

                  × 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