Ihr kennt doch denke ich alle das Schachbrettproblem: Ein Reiskorn wird aufs erste Feld gelegt, dann die doppelte anzahl aufs zweite, wieder die doppelte aufs dritte, usw. Ich versuche grade ein kleines Programm zu schreiben (für eine 32bit Maschine) die ausrechnen soll, wie viele Reiskörner auf einem eingegebenen Feld liegen, und wie viel Reis auf allen Feldern bis dahin liegt. Problem nur: long unsigned int kommt reicht nicht bis an die zahl ran. Gibts eine Möglichkeit, dass ich trotzdem alle Zahlen bis 9229372036412835568 (ich hatte vieeeeeel Spaß) in einer Variable speichern kann? (char kommt nicht in Frage, weil ich mit den Zahlen weiterrechnen muss.)
PS: Mein jetziger Algorithmus:
Code: Alles auswählen
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
int main (int argc,char* argv[])
{
if (argc!=2)
{
std::cout<<"Sie haben mehr oder weniger Parameter als einen übergeben.\nDas Programm wird nun beendet.\n\n";
std::cout<<"Benutzung des Programms: \nAufruf in der Kommandozeile mit dem Parameter 1-64 als Angabe des Schachfeldes.";
exit(5);
}
int eingabe=atoi(argv[1]);
long unsigned int felder[eingabe+1];
felder[1]=1;
long unsigned int insg =1;
int count=2;
std::cout<<eingabe<<"\n\n";
while (count < eingabe)
{
std::cout<<"Feld "<<count<<":";
felder[count]=felder[count-1]*2;
insg+=felder[count];
std::cout << felder[count] <<"\ninsgesamt:"<< insg<<"\n\n";
count++;
}
std::cout<<"\n\nDas "<<eingabe<<". Feld: "<<felder[eingabe-1]<<"\n";
std::cout<<"Alle Felder bis zum "<<eingabe<<". Feld: "<<insg<<"\n";
getchar();
}
MfG Naums