Hallo liebe Community,
Es geht um die alte Geschichte mit den Reiskörnern auf dem Schachbrett. In Kurzform:
Auf dem ersten Feld soll ein Reiskorn liegen, auf jedem weiteren wird die Anzahl Verdoppelt, und die Summe am Ende ausgegeben. Die Zahlen auf dem 64. Feld (8x8 Schachbrett) übersteigt leider die Speicherreichweite des Typs long. Mein Programm läuft theoretisch, bis auf das letzte Feld. Und hier stellt sich sicherlich auch der Schwerpunkt des Programmes dar.
Ich darf die Klasse BigInteger nicht benutzen, muss also selbst ein Int Array entwickeln. In diesem Array soll quasi eine Schriftliche Addition stattfinden. Also: Ist die Zahl 0-9, soll diese Zahl am letzten Platz im Array gespeichert werden, ist die Zahl zweistellig, soll bei der 10, 20, 30 jeweils ein Übertrag in das nächste Arrayfeld von 1, 2, 3 passieren. So sollen alle Zahlen addiert und am Ende ausgegeben werden.
Mein Grundprogramm sieht wie folgt aus: (Total simpel :bahnhof
Ausgegeben werden soll die Nummer des Feldes, die Anzahl der Körner auf diesem Feld und die Summe aller Körner.
Um das Problem zu verdeutlichen, hier die letzten zwei Zeilen der Ausgabe:
Eine erste Idee war, eine for-Schleife rückwärts laufen zu lassen (ist das möglich?)
und so Schritt für Schritt die in koerner und summe berechneten Werte zu übertragen. Leider gehen mir die Ideen, bzw. die Kenntnisse aus so eine Rechnung innerhalb eines Arrays zu realisieren, und hoffe auf Denkanstöße und Vorschläge.
(Ich habe vor 3 Semestern mal "Ingenieurinformatik" gehört, wo die Grundlagen der Javaprogrammierung vermittelt wurden. Nun helfe ich mit meinem Halbwissen meiner Freundin, sie lernt auch Grundlagen, nur im ET/IT Studium. Leider haben die schon nach 2 Monaten meinen Wissensstand überholt ;( Mit der Zeit ist auch einiges meiner Kenntnisse verloren gegangen :rtfm
Ich freue mich auf gemeinsame Lösung des Problems
Liebe Grüße
Philipp
Es geht um die alte Geschichte mit den Reiskörnern auf dem Schachbrett. In Kurzform:
Auf dem ersten Feld soll ein Reiskorn liegen, auf jedem weiteren wird die Anzahl Verdoppelt, und die Summe am Ende ausgegeben. Die Zahlen auf dem 64. Feld (8x8 Schachbrett) übersteigt leider die Speicherreichweite des Typs long. Mein Programm läuft theoretisch, bis auf das letzte Feld. Und hier stellt sich sicherlich auch der Schwerpunkt des Programmes dar.
Ich darf die Klasse BigInteger nicht benutzen, muss also selbst ein Int Array entwickeln. In diesem Array soll quasi eine Schriftliche Addition stattfinden. Also: Ist die Zahl 0-9, soll diese Zahl am letzten Platz im Array gespeichert werden, ist die Zahl zweistellig, soll bei der 10, 20, 30 jeweils ein Übertrag in das nächste Arrayfeld von 1, 2, 3 passieren. So sollen alle Zahlen addiert und am Ende ausgegeben werden.
Mein Grundprogramm sieht wie folgt aus: (Total simpel :bahnhof
Ausgegeben werden soll die Nummer des Feldes, die Anzahl der Körner auf diesem Feld und die Summe aller Körner.
Java:
public class ReisKoerner
{
public static void main(String args[]) {
long koerner=1;
long summe=0;
System.out.println("Felder Körner Summe Körner");
for(int i=1;i<65;i++){
summe = summe + koerner;
System.out.println(i + " " + koerner + " "+summe) ;
koerner += koerner;
}
}
}
Um das Problem zu verdeutlichen, hier die letzten zwei Zeilen der Ausgabe:
Code:
Felder Körner Summe Körner
63 4611686018427387904 9223372036854775807
64 -9223372036854775808 -1
Eine erste Idee war, eine for-Schleife rückwärts laufen zu lassen (ist das möglich?)
Java:
int [] reiskornsumme;
int [] reiskorn;
for(int i = reiskornsumme.length; i < 1; i--)
for(int j = reiskorn.length; i < 1; i--)
und so Schritt für Schritt die in koerner und summe berechneten Werte zu übertragen. Leider gehen mir die Ideen, bzw. die Kenntnisse aus so eine Rechnung innerhalb eines Arrays zu realisieren, und hoffe auf Denkanstöße und Vorschläge.
(Ich habe vor 3 Semestern mal "Ingenieurinformatik" gehört, wo die Grundlagen der Javaprogrammierung vermittelt wurden. Nun helfe ich mit meinem Halbwissen meiner Freundin, sie lernt auch Grundlagen, nur im ET/IT Studium. Leider haben die schon nach 2 Monaten meinen Wissensstand überholt ;( Mit der Zeit ist auch einiges meiner Kenntnisse verloren gegangen :rtfm
Ich freue mich auf gemeinsame Lösung des Problems
Liebe Grüße
Philipp