P
puelo
Gast
Hallo,
ich habe ein kleines, vielleicht auch triviales Problem mit einer dynamischen Arraylänge. Für die Uni haben wir eine Hausaufgabe bekommen in welcher wir Dezimalzahlen in Arrays addieren sollen (Arrayübung).
Das Ganze sieht folgendermaßen aus:
z.B:
int[] zahl1 = {1, 1, 2, 4} => Das entspricht der Zahl 4211
int[] zahl2 = {2, 2, 4, 5} => Das entspricht der Zahl 5422
Diese zwei Zahlen sollen wir nun addieren und das Ergebnis in einem weiteren Array in der selben (umgedrehten) Reihenfolge abspeichern.
Bei 2 Arrays mit selber Länge war das ganze kein Problem, auch wenn die letzten beiden Dezimalstellen addiert mehr als 10 ergeben habe ich das Array bei der Initialisierung einfach 1 Größer gemacht.
Das sah folgendermaßen aus:
vielleicht etwas überladen. Habe bereits angefangen Dinge für verschiedene Arraylängen zu implementieren. Wenn ihr hierzu schon Tipps habt nur immer her damit
.
Sooo.. Zum eigentlichen Problem:
Wenn jetzt z.B eine Zahl 5500 ist, also im Array dann 0, 0, 5 ,5
und die andere Zahl dann 999900 ist, also im Array 0, 0, 9, 9, 9, 9
Dann wird ja theoretisch das Array des Ergebnisses um 1 Größer als die Länge des 999900 Arrays..
Wie kann ich das bewerkstelligen? Vorher wars ja kein Problem, weil ich die letzten beiden Stellen der Arrays einfach addieren und dann prüfen konnte, aber hier geht das natürlich nichtmehr.
Bin für jeden Ansatz dankbar. Vielen DANK!
puelo
ich habe ein kleines, vielleicht auch triviales Problem mit einer dynamischen Arraylänge. Für die Uni haben wir eine Hausaufgabe bekommen in welcher wir Dezimalzahlen in Arrays addieren sollen (Arrayübung).
Das Ganze sieht folgendermaßen aus:
z.B:
int[] zahl1 = {1, 1, 2, 4} => Das entspricht der Zahl 4211
int[] zahl2 = {2, 2, 4, 5} => Das entspricht der Zahl 5422
Diese zwei Zahlen sollen wir nun addieren und das Ergebnis in einem weiteren Array in der selben (umgedrehten) Reihenfolge abspeichern.
Bei 2 Arrays mit selber Länge war das ganze kein Problem, auch wenn die letzten beiden Dezimalstellen addiert mehr als 10 ergeben habe ich das Array bei der Initialisierung einfach 1 Größer gemacht.
Das sah folgendermaßen aus:
Java:
class AddNumbers{
public static void main (String[] args){
int[] zahl1 = {1, 1, 7, 6, 9, 9, 9};
int[] zahl2 = {1, 2, 3, 4};
int[] ergebnis;
int arrLength = 0;
int arrLengthLong = 0;
int arrDis = 0;
int wNumber = 0;
if(zahl1.length == zahl2.length){
arrLength = zahl1.length;
arrLengthLong = zahl1.length;
}else if(zahl1.length > zahl2.length){
arrLengthLong = zahl1.length;
arrDis = zahl1.length - zahl2.length;
wNumber = 1;
}else if (zahl2.length > zahl1.length){
arrLengthLong = zahl2.length;
arrDis = zahl2.length - zahl1.length;
wNumber = 2;
}
if(zahl1.length == zahl2.length && zahl1[zahl1.length-1] + zahl2[zahl2.length-1] >= 10){
ergebnis = new int[arrLengthLong+1];
}else{
ergebnis = new int[arrLengthLong];
}
for (int i = 0; i < arrLength; i++){
if(zahl1[i] + zahl2[i] >= 10){
ergebnis[i] += (zahl1[i] + zahl2[i]) - 10;
ergebnis[i+1] += 1;
}else{
ergebnis[i] = zahl1[i] + zahl2[i];
}
}
if ( arrDis != 0){
for (int i = arrDis + 1; i < ergebnis.length; i++){
if (wNumber == 1)
ergebnis[i] += zahl1[i];
else if (wNumber == 2)
ergebnis[i] += zahl2[i];
}
}
for (int i = 0; i < ergebnis.length; i++)
System.out.println(ergebnis.length);
}
}
vielleicht etwas überladen. Habe bereits angefangen Dinge für verschiedene Arraylängen zu implementieren. Wenn ihr hierzu schon Tipps habt nur immer her damit
Sooo.. Zum eigentlichen Problem:
Wenn jetzt z.B eine Zahl 5500 ist, also im Array dann 0, 0, 5 ,5
und die andere Zahl dann 999900 ist, also im Array 0, 0, 9, 9, 9, 9
Dann wird ja theoretisch das Array des Ergebnisses um 1 Größer als die Länge des 999900 Arrays..
Wie kann ich das bewerkstelligen? Vorher wars ja kein Problem, weil ich die letzten beiden Stellen der Arrays einfach addieren und dann prüfen konnte, aber hier geht das natürlich nichtmehr.
Bin für jeden Ansatz dankbar. Vielen DANK!
puelo