Ein Array eintrag countdown?

...komplette Frage anzeigen

3 Antworten

Hallo leonardomessi,

schaue dir vor dieser Aufgabe bitte meine Antwort zu dieser Frage an: https://www.gutefrage.net/frage/such-algorithmus-problem?foundIn=list-answers-by-user#answer-192508490

Wenn du den Sinn und den Ablauf des ersten Programms verstehst, dann kannst du das Wissen recht einfach auf diese Aufgabe projizieren.

Damit deine Klausur auch etwas wird, helfe ich dir auch hier gerne weiter! Für diese Aufgabe muss man etwas weiter denken, als eine Schleife erlaubt. Um die Aufgabe zu bewältigen, benötigst du eine Schleife in einer Schleife. Das mag kompliziert klingen, wenn man es aber einmal verstanden hat, dann ist das gar nicht mehr so schwer!

Bevor du mit dem Code anfängst, solltest du dir einen Plan machen. Was muss das Programm könnne? Wie könnte ich es aufbauen? Hattet ihr schon UML-Struktorgramme? Diese helfen dir sehr, den Schleifen- und Verzweigungsaufbau besser zu verstehen. Wenn ihr in der Schule(?) schon so weit seid, dann schaue dir dieses Kapitel noch mal sehr genau an. In der Informatik ist es nämlich immer so: Übung macht den Meister! Das ist wie Mathe, Lernen bringt dir nur bedingt etwas...

Also solltest du dir jetzt folgende Plan machen:

1. Damit ich jeden Array-Wert erreiche, brauche ich schon mal eine Schleife, um jeden Wert zu erreichen.

2. Wenn ich den ersten Array-Wert habe, dann möchte ich diesen wieder auf 0 runter zählen. Somit brauche ich eine weitere Schleife, die den Startwert des ArrayIndexes bekommt und dann runterzählt.

3. Wie gebe ich die Ausgabe auf der Konsole aus? Damit es übersichtlich bleibt, muss ich also nach jedem Array-Index eine Line-break einbauen.

4. Was ist, wenn eine negativer Wert im Array ist? Oder wenn er 0 ist? Für beide Eventualitäten benötige ich eine Verzweigung!

Da ihr anscheinend noch keine Methoden hattet, lassen wir das externe Methodenaufrufen einfach mal raus! -> Ist dann mehr Code, macht aber nichts.

Nun arbeitest du die Liste ab und schreibst den Java-Code. Damit du auch eine ausführliche Lösung hast, habe ich dir hier eine geschrieben. Wie ich bereits bei deiner anderen Frage geschrieben habe: Erst selbst probieren und dann die Lösung betrachten! Stures copy-and-paste bringt dich in diesem Stadium absolut nicht weiter! Ich wünsche dir weiterhin viel Erfolg und hoffe, du hast in deiner Klausur ein Erfolgserlebnis!

PS: Für diesen bescheuerten Tab-Aufbau ist gutefrage.net verantwortlich, in Eclipse war der Aufbau perfekt. Aber das sollte dich nicht am Lösen hindern.

public static void main(String[]args) {
// Deklariere Array mit Zahlen!
int[] dein_Array = {10, -5, 0, 0, 4, 5};
// Rufe Methode zaehleArray auf und übergebe das oben deklarierte Array!
zaehleArray(dein_Array);
}

public static void zaehleArray(int[] array) {

// For-Schleife, die jeden Wert des Arrays durchläuft. Hier: Erst 10, dann -5, dann 0, dann 0, dann 4, dann 5!
for(int i = 0; i < array.length; i++) {

// Wenn der aktuelle Wert (siehe oben!) größer als null ist!
if(array[i] > 0) {
// Dann bilde zweite Schleife, die vom aktuellen Wert runter auf null zählt!
for(int zaehler = array[i]; zaehler >= 0; zaehler--) {
// Gebe die Zählwerte aus!
System.out.print(zaehler + " ");
}
// Gebe zum Schluss einen Line-break aus, damit alle Array-Zahlen übersichtlich ausgegeben werden!
System.out.println();
}

// Wenn der aktuelle Wert (siehe oben!) kleiner als null ist!
if(array[i] < 0) {
// Dann bilde zweite Schleife, die vom aktuellen Wert hoch auf null zählt!
for(int zaehler = array[i]; zaehler <= 0; zaehler++) {
// Gebe die Zählwerte aus!
System.out.print(zaehler + " ");
}
// Gebe zum Schluss einen Line-break aus, damit alle Array-Zahlen übersichtlich ausgegeben werden!
System.out.println();
}

// Wenn der aktuelle Wert (siehe oben!) genau null ist!
if(array[i] == 0) {
// Dann gebe einfach nur null aus, denn von 0 kann man nicht hoch bzw. runter auf null zählen!
System.out.println("0");
}

// End-Schleife!
}

// Ende statische Methode! ; kein return, da Methode void ist!
}
Antwort bewerten Vielen Dank für Deine Bewertung

Liefere bitte mal die genaue Schnittstellenspezifikation der Funktion, die Du schreiben sollst. Also, was rein geht und was rauskommen soll. Die müßt ihr von eurem Lehrer geliefert bekommen haben. 

Antwort bewerten Vielen Dank für Deine Bewertung

die ausgabe ist immer

System.out.print(a[0]);

die zuweisung

a[0]=a[0]-1;

reduziert den wert in a[0]

willst du durch das array  brauchst du dort aber die position

System.out.print(a[pos]);
Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?