Partage
  • Partager sur Facebook
  • Partager sur Twitter

Opérations mathématiques sur des gros nombres

Sujet résolu
    16 novembre 2018 à 21:24:01

    Bonjour à tous.

    Je débute en C++ grâce à Openclassrooms. Je teste quelques opérations mathématiques, mais je cale des qu'on nombre dépasse 9 chiffres...

    Un simple exemple, si j'essaye de diviser 9531370722 par 10, j'obtiens 94143613...

    Quelqu'un sait à quoi c'est dû? Et ce que je peux faire pour que l'opération se passe correctement?

    Merci,

    • Partager sur Facebook
    • Partager sur Twitter
      16 novembre 2018 à 23:06:23

      salut ,

      regarde du cotée de gmpxx.h je penca que tu trouvera ton bonheur .

      si sait un probleme de code il nous faut aussi ce dernier .

      • Partager sur Facebook
      • Partager sur Twitter
        16 novembre 2018 à 23:15:20

        Lu'!

        Changes de cours. Il apprend un sacré paquet d'âneries à ne pas faire, en plus de montrer des exemples de code buggés et d'être obsolète (quelques recherches sur le forum t'en diront plus). Prends plutôt le tutoriel disponible sur Zeste de Savoir. Ou encore le cours de C++ de @gbdivers, même s'il est encore en écriture il ne contient pas ce genre de bavures (et si tu as des problèmes de compréhension sur une partie et que ce n'est pas à cause d'un manque d'étude du cours,tu peux poster ici). Si tu préfères un cours déjà complet, tourne toi vers le C++ Primer de Lippman dans sa dernière édition (en anglais), il sera un poil moins à jour mais c'est un bon cours.

        Concernant ton problème, si tu debutes, pas la peine de passer à un truc comme GMP, c'est au delà de ce que tu sais manipuler. Pour comprendre ce qui se passe, renseigne toi sur la représentation binaire des nombres et la technique du complément à deux.

        • Partager sur Facebook
        • Partager sur Twitter

        Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

          17 novembre 2018 à 0:19:48

          LudovicDabee a écrit:

          Un simple exemple, si j'essaye de diviser 9531370722 par 10, j'obtiens 94143613...

          Quelqu'un sait à quoi c'est dû? Et ce que je peux faire pour que l'opération se passe correctement?

          Les nombres entiers, souvent, sont codés sur 4 octets, donc sont compris entre -2.147.483.648 et 2.147.483.647. Si un nombre dépasse la valeur maximale, genre on veut calculer 2.147.483.647 + 1, il me semble qu'il repasse à -2.147.483.648. Du coup, le nombre 9.531.370.722 vaut en réalité 9.531.370.722 modulo 2^31 (ou 2^32 ? ça donne le même résultat) c'est-à-dire 941.436.130. Quand on divise ce nombre par 10, on obtient donc 94.143.613. Pile poil !

          Pour que l'opération se passe correctement, il faut utiliser des entiers longs (je ne sais pas si ça existe en C++, j'espère que oui vu qu'en C ça existe).

          -
          Edité par robun 17 novembre 2018 à 1:31:51

          • Partager sur Facebook
          • Partager sur Twitter
            17 novembre 2018 à 10:28:40

            Merci pour vos réponses. je vais donc approfondir mes connaissances avant de tenter cette opération.
            • Partager sur Facebook
            • Partager sur Twitter

            Opérations mathématiques sur des gros nombres

            × 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