mathematisches und programmiertechnisches Problem- Fakultät einer Zahl



  • je nach Plattform ginge auch noch unsigned long long. Mit dem vc7.1 oder dem gcc bekommt man so einen 64Bit unsigned. Der reicht auch ganz schön weit.

    MfG Jester



  • vielleicht sollte man erwähnen, daß man in diesem Falle eine iterative Lösung bevorzugen sollte. ist klar, oder?!



  • Könnte mir das jemand aufschreiben, wie man solch einen neuen Datentyp erstellt?... natürlich nur, wenn es nicht allzu aufwendig ist



  • Das ist leider ziemlich aufwendig und auch ziemlich lahm.

    MfG Jester



  • p-chan schrieb:

    also wir haben uns mit der Fakultät auch in der schule beschäftigt, leider klappt das programm nur bis 12! Danach, also ab 13! sind die Werte fehlerhaft; unser Lehrer meinte irgendwie, das für long int nur 4 Byte reserviert sind und das deshalb nich klappt. Wie kann man nun also größere Fakultäten berechnen???

    Hmmm... kann ich irgendwie nicht nachvollziehen.

    Denn: 4 Bytes ergeben immerhin 2^32 Möglichkeiten.
    1 Byte = 8 Bits und ein Bit ist die kleinste Informationseinheit.

    Deshalb 32, denn 8*4 = 32 😉

    Nun zu den 2^32 das ergibt = 4294967296, dieser Zahlenbereich wäre unsigned.
    (d.h. ohne Negative Zahlen.)

    Bei signed (Vorzeichenbehaftet, also mit negativen Zahlen)

    ergibt das einen Wertebereich von:

    -2147483648

    bis

    2147483647

    Und dann möchte ich nochmal erklärt haben, wieso die 13 den Wertebereich
    sprengen soll? 😕 Das ralle ich net wirklich.. 🙂

    Theoretisch wäre nach dieser Werteangabe mit negativen Zahlen immerhin die Fakultät bis zu 2147483647 möglich.

    Von wegen geringer Wertebereich...

    Searence

    edit: Fehler beseitigt, ich weiss ich bin pingelig 😉



  • weil 13! = 6227020800 und ist mehr als 2^32.



  • 12! = 479001600 <-- Im Wertebereich von long int
    13! = 6227020800 <-- außerhalb des Wertebereichs von long int

    so wars gemeint... die 13 als Zahl liegt natürlich im Wertebereich, unsigned spielt übrigens keine Rolle, da die Fakultät stets positiv ist



  • Toll Jester, man sieht du kennst dich aus! 👍

    Jetzt die Quizfrage, was gibt das Programm als 13! wenn mans trotzdem eingibt?

    bitte nicht compilieren sondern so überlegen 😉


  • Mod

    wenn es nicht um das exakte ergebnis bis in die letzte stelle geht, kann auch das hier von interesse sein:

    http://www.c-plusplus.net/forum/viewtopic.php?t=97352

    Toll Jester, man sieht du kennst dich aus! 👍

    Jetzt die Quizfrage, was gibt das Programm als 13! wenn mans trotzdem eingibt?

    bitte nicht compilieren sondern so überlegen 😉

    wie schön, dass der standard garantien für unsigned operationen gibt 😉



  • Jester schrieb:

    weil 13! = 6227020800 und ist mehr als 2^32.

    Dann habe ich das falsch verstanden, sorry 🙂

    Dann ergibt es ja auch eine Logik, dachte irgendwie an einen IntegerWert von 13.
    Wo habe ich bloss meinen Kopf gehabt? 😕

    Searence


Anmelden zum Antworten