Hallo!
Ich habe folgende Aufgabe erhalten:
Addieren beliebig großer natürlicher Zahlen
Natürliche Zahlen lassen sich als einzelne Ziffern in int-Arrays repräsentieren. Damit kann man beliebig
große Zahlen darstellen.
Günstig für viele Berechnungen ist es, wenn die Ziffern in umgekehrter Reihenfolge gespeichert werden.
Beispielsweise stellt das Array f 1, 2, 3, 4, 5, 6, 7, 8 g die Zahl 87.654.321 dar, d.h. die Ziffer der letzten Stelle
steht immer beim Index 0.
Schreiben Sie eine Methode int[] add(int[] a, int[] b), die zwei auf diese Art repräsentierte Zahlen der gleichen
Länge als Parameter hat und ein neues Array berechnet, das die Summe der beiden Zahlen repräsentiert.
Die Methode soll so arbeiten, wie Sie das vom ”schriftlichen Addieren“ her kennen. Das Ergebnis-Array
ist möglicherweise um eine Stelle länger als die beiden Arrays a und b, falls es bei der letzten Addition
einen Übertrag gibt. Sie dürfen auch ein Ergebnis-Array liefern, das um 1 länger als die minimal benötigte
Stellenzahl sind (die ”führende 0“ ändert ja nicht den Wert).
Beispiel 1234 + 5678 = 6912: Arrays a = f 4, 3, 2, 1 g, b = f 8, 7, 6, 5 g, Ergebnis = f 2, 1, 9, 6, 0 g.
Beispiel 9998 + 2 = 10000: Arrays a = f 8, 9, 9, 9 g, b = f 2 g, Ergebnis = f 0, 0, 0, 0, 1 g.
Erstellen Sie die Methode boolean testArrays(int[] a, int[] b), die testet, ob beide Arrays definiert,
die Länge jeweils gleich und > 0 und alle Ziffern zwischen 0 und 9. add soll die Methode verwenden.
Ich habe mich auch schon ausgiebig mit der Aufgabe auseinandergesetzt, komme aber nicht wirklich weiter. Das habe ich bis jetzt:
//Voraussetzung ist, dass a und b die gleiche Länge haben
int [] c=new int [a.length+1]; //Feld für Ergebnis
int i; //Schleifenzähler
int s; //Summe der aktuell berechneten Stelle
int uebertrag = 0; //Übertrag für die nächste Stelle
for (i=0; i<c.length-1; i=i+1){
s=a**+b**;
c**= (s+uebertrag) % 10;
uebertrag = s/10;
}
c[c.length-1]=uebertrag;
return c;
}```
Wäre lieb, wenn sich jemand kurzfristig melden könnte, wenn er helfen kann, ist nämlich dringend! Ich bin dankbar für jede Hilfe :) Vielen Dank!