Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calculatrice avec puissance

5 puissance 2 = 24 !

Sujet résolu
    28 mars 2007 à 13:29:27

    bonjour,
    j'essai de faire comme premier programme une calculatice.
    j'ai bien reussi les o<code type="c"></code>pérations simple : +, -, /, x
    j'ai voulu y intégrer les puissance, pour cela j'avais trouvé le code
    resultat=pow(nombre1, nombre2);
    cela fontionne très bien la plupart du temps,
    malheurement, lorsque je calcule 5^2 cela me mets 24 au lieu de 25
    D'ou le probleme peut-il venir ?
    Merci d'avance de vos reponses.
    Cordialement
    • Partager sur Facebook
    • Partager sur Twitter
      28 mars 2007 à 13:33:44

      Pourrai tu posté le code de ta fonction pow, stp.
      • Partager sur Facebook
      • Partager sur Twitter
        28 mars 2007 à 13:35:46

        mon code est :


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




        int main(int argc, char** argv[])


        {


        COORD         dwTaille = {80, 25};
                            HANDLE        hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

                          SetConsoleScreenBufferSize(hConsole, dwTaille);
                          SetConsoleTitle("XDOS Calculatrice Ultimate");



            // Panneau "d'affichage" //



                               printf("\n\n\n\n\n\n\n\n");


                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");

                               printf("                             Chargement en cours");


        Sleep(300);

        Sleep(350);
        printf(".");
        Sleep(350);
        printf(".");
        Sleep(350);
        printf(".\n");

        printf("             Chargement effectue avec succes. Ouverture de la session.");


        Sleep(1700);

                               printf("\n\n\n\n");



            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");

                               printf("                        XDOS Calculatrice  7.03\n\n");



        printf("\n\n");


              long resultat=0,choix=0,nombre1=0,nombre2=0;

          while (resultat == nombre1+nombre2 || resultat ==nombre1+nombre2 || resultat==nombre1*nombre2 ||nombre1/nombre2)
          {




        printf("                               Que voulez-vous faire ?\n\n");

           printf("     1- une addition                                10- License\n");
           printf("     2- une soustraction                            11- Aide\n");
           printf("     3- une multiplication                          12- Mises a jour\n");
           printf("     4- une division                                13- Nous contacter\n");
           printf("     5- un modulo\n");
           printf("     6- une puissance\n");
           printf("     7- un cosinus (non fonctionnel)\n");
           printf("     8- un sinus (non fonctionnel)\n");
           printf("     9- une tangente (non fonctionnel)\n");


           printf("\n");
           printf("Votre choix et valider avec Entree: ");
           scanf("%ld",&choix);

           printf("\n\n");

                                  printf("\n\n\n\n");
           switch(choix)
           {
            case 1:


                               printf("\n\n\n\n\n\n\n\n");


            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");



                                  printf("\n\n\n\n");

             printf("Entrez le premier nombre a additionner et valider : ");
             scanf("%ld",&nombre1);
             printf("                                                   +");
             scanf("%ld",&nombre2);
             resultat=nombre1+nombre2;
             printf("Le resultat est : %ld\n\n\n\n",resultat);
             break;

             case 2:



                               printf("\n\n\n\n\n\n\n\n");

            // Panneau "d'affichage" //



                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");

                                  printf("\n\n\n\n");

             printf("Entrez le premier nombre a soustraire et valider : ");
             scanf("%ld",&nombre1);
             printf("                                                  -");
             scanf("%ld",&nombre2);
             resultat=nombre1-nombre2;
             printf("Le resultat est : %ld\n\n\n\n",resultat);
             break;

           case 3:



                               printf("\n\n\n\n\n\n\n\n");

            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");

                                  printf("\n\n\n\n");

             printf("Entrez le premier nombre a multiplier et valider : ");
             scanf("%ld",&nombre1);
             printf("                                                  x");
             scanf("%ld",&nombre2);
             resultat=nombre1*nombre2;
             printf("Le resultat est : %ld\n\n\n\n",resultat);
             break;

             case 4:



                               printf("\n\n\n\n\n\n\n\n");

            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");

                                  printf("\n\n\n\n");


             printf("Entrez le premier nombre a diviser et valider : ");
             scanf("%ld",&nombre1);
             printf("                                               /");
             scanf("%ld",&nombre2);
             resultat=nombre1/nombre2;
             printf("Le resultat est : %ld\n\n\n\n",resultat);
             break;

             case 5:




                               printf("\n\n\n\n\n\n\n\n");

            // Panneau "d'affichage" //



                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");

                                  printf("\n\n\n\n");


             printf("Entrez le premier nombre et valider : ");
             scanf("%ld",&nombre1);
             printf("Entrez le deuxieme nombre et valider : ");
             scanf("%ld",&nombre2);
             resultat=nombre1%nombre2;
             printf("Le resultat est : %ld\n\n\n\n",resultat);
             break;

            case 6:




                               printf("\n\n\n\n\n\n\n\n");

            // Panneau "d'affichage" //



                               printf("                     **************************************\n");
                               printf("                     *          XDOS CALCULATRICE         *\n");
                               printf("                     **************************************\n");
                               printf("\n");

                                  printf("\n\n\n\n");


             printf("Entrez le premier nombre et valider : ");
             scanf("%ld",&nombre1);
             printf("                                     ^");
             scanf("%ld",&nombre2);
             resultat=pow(nombre1, nombre2);
             printf("Le resultat est : %ld\n\n\n\n",resultat);
             break;



             case 10:



            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *         LICENSE  XDOS 7.03         *\n");
                               printf("                     **************************************\n");


             printf("L'utilisation du programme informatique est protege par les droits de propriete intellectuelle.");
             printf(" Il est interdit de vendre, donner, louer, preter le logiciel, de meme que de le ceder de quelque autre maniere que ce soit ou de le remettre a des tiers pour qu'ils l'utilisent.");
             printf(" L'ingenierie inverse (reverse engineering), la decompilation et le desassemblage, ainsi que toutes les autres formes de reconstitution de la logique du logiciel, sont defendus.\n");
             printf("\n");
             break;

             case 11:



            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *           AIDE POUR  XDOS          *\n");
                               printf("                     **************************************\n");

             printf("Vous trouverez dans le menu a droite, les differentes operations que le logiciel peux effectuer.\n");
             printf("A droite, vous trouverez les options de fonctionnement du logiciel.\n");
             printf("Quand le logiciel vous demande -votre choix-, choisissez l'une des options\n disponible au dessus.\n");
             printf("N'oubliez pas que l'on valide toujours avec la touche Entree.\n");
             printf("\n");
             break;

             case 12:



            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *       MISE A JOUR POUR  XDOS       *\n");
                               printf("                     **************************************\n");

                               printf("\n");

             printf("    Si vous n'avez pas de connexion a internet ou si vous n'etes pas connecte,\n");
             printf("                  aucune mise a jour ne pourra etre effectue\n\n");




               printf("                         Connexion au site");
               Sleep(500);
               printf(".");
               Sleep(500);
               printf(".");
               Sleep(500);
               printf(".\n");

               Sleep(2000);

               ShellExecute(NULL, NULL, "http://www.orange.fr", NULL, NULL, SW_SHOWNORMAL);

                               printf("\n\n");


             break;




             case 13:



            // Panneau "d'affichage" //


                               printf("                     **************************************\n");
                               printf("                     *            CONTACT  XDOS           *\n");
                               printf("                     **************************************\n");

                               printf("\n");

             printf("     Pour nous contacter, veuillez nous ecrire a axel@informaticien.com\n\n\n");

             printf("\n\n");

             break;





             break;



             default:
             printf("-- ERREUR 604 : veuillez entrer une valeur numerique correcte --\n\n");
             break;

        }

           }

        Sleep(750);


            system("PAUSE");

        }
        • Partager sur Facebook
        • Partager sur Twitter
          28 mars 2007 à 14:01:06

          effectivement la fonction pow de la librairie math.h a un problème avec 5^2 mais je n'en connait pas la raison.
          Par contre tu peut écrire toi même une fonction qui calcule les puissances ;)
          par exemple

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

          long puissance(long nombre1, long nombre2);

          int main(int argc, char *argv[])
          {
            long resultat=0, nombre1=5, nombre2=2;
           
            resultat = puissance(nombre1, nombre2);
            printf("resultat: %ld\n", resultat);
           
            system("PAUSE");     
            return 0;
          }

          long puissance(long nombre1, long nombre2)
          {
               long i;
               
               for(i=0; i<(nombre2-1); i++)
               nombre1*=nombre1;
               if(nombre2 == 0)
               nombre1 = 0;
               
               return nombre1;
          }


          si tu veux qque explication n'ésite pas mais je pense que tu n'en a pas besoin.(je ne connait pas ton niveau)
          • Partager sur Facebook
          • Partager sur Twitter
            28 mars 2007 à 14:10:00

            Citation : percudada

            effectivement la fonction pow de la librairie math.h a un problème avec 5^2


            o_O Ah ? Quel problème ?


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

            int main (void)
            {
               double n = pow (5, 2);
               printf("n = %e %f %g\n", n, n, n);
               return 0;
            }


            n = 2.500000e+001 25.000000 25

            Press ENTER to continue.
            • Partager sur Facebook
            • Partager sur Twitter
            Music only !
              28 mars 2007 à 14:15:45

              j'avais essayer avec %g mais je n'avais pas utiliser le double
              mais je veux bien qque explication, stp
              après test si j'ai bien compris la fonction pow renvoi un double donc il faut le stocker dans un double
              et utiliser la notation %g pour afficher la valeur correct. Sinon notre variable de type long tronque la valeur
              renvoyer par pow (5.09279e-313) soit 24. Donc il y devrai y avoir d'autre cas, non?
              • Partager sur Facebook
              • Partager sur Twitter
                28 mars 2007 à 14:37:58

                Citation : Pas de titre

                printf(" **************************************\n");
                printf(" * CONTACT XDOS *\n");
                printf(" **************************************\n");


                Juste pour preciser aue le caractere '\t' fais des tabulations. ;)
                • Partager sur Facebook
                • Partager sur Twitter
                  28 mars 2007 à 17:52:19

                  percudada -> et si l'exposant est égal à zero? un petit return ?


                                         printf("                             Chargement en cours");


                  Sleep(300);

                  Sleep(350);
                  printf(".");
                  Sleep(350);
                  printf(".");
                  Sleep(350);
                  printf(".\n");

                  printf("             Chargement effectue avec succes. Ouverture de la session.");



                  Je ne vois pas l'interet de cette partie de code.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 mars 2007 à 19:05:09

                    C'est pour faire style ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 août 2008 à 3:01:26

                      Citation : Yoshito

                      C'est pour faire style ;)


                      Ben c'est bien laid, il aurait dû éviter.
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Calculatrice avec puissance

                      × 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