Potenzen berechnen von grossen Zahlen.
-
Hallo Leute.
kann mir eventuell von euch jemand helfen.
Ich muss für die Schule folgendes Programm schreiben:Nach einer alten Legende wünschte sich der Ernder des Schachspiels
vom König:
• 1 Reiskorn auf dem ersten Feld eines Schachbrettes
• 2 Reiskörner auf dem 2. Feld
• 4 Reiskörner auf dem 3. Feld
• u.s.w.
Geben Sie die Anzahl der Reiskörner mit wachsender Anzahl von Feldern aus.
Berechnen Sie zusätzlich, wie viele LKWs (je 7,5 Tonnen Ladung) man für den
Transport benötigt, wenn jedes Reiskorn 30 mg wiegt. Wenn weiterhin ein Reiskorn
ein Volumen von etwa 3:5 · 108m3 hat, wie hoch wird dann ein Fuÿballfeld
(70 auf 105 m) bedeckt?
Ausgabe mit printfHabe überlegt und das dies kann man ja ganz einfach mit einem potenzrechner ausgeben.
Hier mein Programm:
#include <iostream>
#include <math.h>using namespace std;
int main(void)
{
long double hochzahl = 1, basis = 2, ergebnis = 0;
ergebnis = std::pow(2, 64);
cout << ergebnis << endl;cin.get();
return 0;
}Allerdings erhalte ich als Ausgabe: 1.84467e+19
Die Ausgabe will ich allerdings als ganze lange Zahl haben?Weiss jemand was ich falsch mache ?
-
Die richtige Zahl passt in einen uint64_t.
-
-
Besten Dank für die schnellen Antworten.
Habe es soeben anders lösen können.
-
Falls du es mit double gelöst hast, ist das Ergebnis falsch. Es muss 18446744073709551615 heraus kommen.
-
volkard schrieb:
Die richtige Zahl passt in einen uint64_t.
Die richtige Zahl ist die erste die nicht mehr in einen
uint64_t
passt.
-
hustbaer schrieb:
volkard schrieb:
Die richtige Zahl passt in einen uint64_t.
Die richtige Zahl ist die erste die nicht mehr in einen
uint64_t
passt.Unfug. Lies nochmal die Aufgabe.
-
Achje, ich dachte an 2^64.
Aber ist ja 2^64-1. Also die letzte Zahl die in einemuint64_t
Platz hat.