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 intso 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
-
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