studyklar
GdI 2 · Übungsblatt 3 · Aufgabe 3

Zahlwörter mit wachsendem Abstand: null, eins, drei, sechs, zehn

Noch einmal das Array mit den Zahlwörtern. Diesmal wird nicht jedes Wort ausgegeben: Das Programm springt durch das Array, und jeder Sprung ist um 1 länger als der vorige. Rechts steht das fertige Programm, die Zeilen zum aktuellen Schritt sind hervorgehoben. Mit Weiter geht es Schritt für Schritt voran.

Die Aufgabe

Aufgabe 3

Es wird noch einmal das String-Array zahlwoerter verwendet. Es sollen ausgewählte Zahlwörter aus dem Array auf der Konsole ausgegeben werden. Und zwar soll der Abstand zwischen den ausgegebenen Wörtern immer um eins erhöht werden. Der Beginn ist: null, eins, drei, sechs, zehn, …

(Der Abstand zwischen 0 und 1 ist 1, der Abstand zwischen 1 und 3 ist 2, usw.).

Ausgegeben werden die Wörter auf den Plätzen 0, 1, 3, 6, 10 und so weiter. Von 0 nach 1 ist der Abstand 1, von 1 nach 3 ist er 2, von 3 nach 6 ist er 3. Gesucht ist eine Schleife, die so lange springt, wie es im Array noch Plätze gibt.

Wie in Aufgabe 2 liegt die vorgegebene Klasse nicht vor. Das Array in Zeile 5 bis 17 ist dasselbe nachgebaute wie dort. Neu zu schreiben sind die Zeilen 19 bis 29.

Merke: Wenn sich die Sprungweite ändert, braucht man zwei Zähler: einen für den Platz und einen für die Sprungweite.
  1. Das Array ansehen.
  2. Zwei Zähler anlegen.
  3. Eine while-Schleife, die am Ende des Arrays stoppt.
  4. Ein Wort ausgeben, mit Komma dazwischen.
  5. Weiterspringen und durchrechnen, wo die Schleife endet.

Das Array mit den Zahlwörtern

        // Vorgegeben: die Zahlwörter von 0 bis 99, eine Zeile je Zehner        String[] zahlwoerter = {                "null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun",                "zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn",                "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fünfundzwanzig", "sechsundzwanzig", "siebenundzwanzig", "achtundzwanzig", "neunundzwanzig",                "dreißig", "einunddreißig", "zweiunddreißig", "dreiunddreißig", "vierunddreißig", "fünfunddreißig", "sechsunddreißig", "siebenunddreißig", "achtunddreißig", "neununddreißig",                "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fünfundvierzig", "sechsundvierzig", "siebenundvierzig", "achtundvierzig", "neunundvierzig",                "fünfzig", "einundfünfzig", "zweiundfünfzig", "dreiundfünfzig", "vierundfünfzig", "fünfundfünfzig", "sechsundfünfzig", "siebenundfünfzig", "achtundfünfzig", "neunundfünfzig",                "sechzig", "einundsechzig", "zweiundsechzig", "dreiundsechzig", "vierundsechzig", "fünfundsechzig", "sechsundsechzig", "siebenundsechzig", "achtundsechzig", "neunundsechzig",                "siebzig", "einundsiebzig", "zweiundsiebzig", "dreiundsiebzig", "vierundsiebzig", "fünfundsiebzig", "sechsundsiebzig", "siebenundsiebzig", "achtundsiebzig", "neunundsiebzig",                "achtzig", "einundachtzig", "zweiundachtzig", "dreiundachtzig", "vierundachtzig", "fünfundachtzig", "sechsundachtzig", "siebenundachtzig", "achtundachtzig", "neunundachtzig",                "neunzig", "einundneunzig", "zweiundneunzig", "dreiundneunzig", "vierundneunzig", "fünfundneunzig", "sechsundneunzig", "siebenundneunzig", "achtundneunzig", "neunundneunzig"        };

Das Array hat 100 Plätze, 0 bis 99. Auf Platz n steht das Wort für die Zahl n. Jede Programmzeile hält einen Zehner; lange Zeilen sind im Kasten umgebrochen.

Aus Aufgabe 2 („Zahlwörter: eine Zahl von 0 bis 99 als Wort ausgeben“): zahlwoerter[37] liefert das Wort auf Platz 37, also „siebenunddreißig“. Der Index beginnt bei 0.

Zwei Zähler: Platz und Abstand

        int index = 0;        int abstand = 0;

index ist der Platz, dessen Wort als Nächstes ausgegeben wird. Er beginnt bei 0, denn das erste Wort ist „null“.

abstand ist die Länge des letzten Sprungs. Vor dem ersten Wort gab es noch keinen Sprung, darum beginnt er bei 0. Der erste Sprung wird dann 1 lang.

Noch 5 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Das Programm Zahlwoerter

Sprünge mit wachsendem Abstand

Abbildung 1Das Programm Zahlwoerter

Sprünge mit wachsendem Abstand

public class Zahlwoerter {     public static void main(String[] args) {         // Vorgegeben: die Zahlwörter von 0 bis 99, eine Zeile je Zehner        String[] zahlwoerter = {                "null", "eins", "zwei", "drei", "vier", "fünf", "sechs", "sieben", "acht", "neun",                "zehn", "elf", "zwölf", "dreizehn", "vierzehn", "fünfzehn", "sechzehn", "siebzehn", "achtzehn", "neunzehn",                "zwanzig", "einundzwanzig", "zweiundzwanzig", "dreiundzwanzig", "vierundzwanzig", "fünfundzwanzig", "sechsundzwanzig", "siebenundzwanzig", "achtundzwanzig", "neunundzwanzig",                "dreißig", "einunddreißig", "zweiunddreißig", "dreiunddreißig", "vierunddreißig", "fünfunddreißig", "sechsunddreißig", "siebenunddreißig", "achtunddreißig", "neununddreißig",                "vierzig", "einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fünfundvierzig", "sechsundvierzig", "siebenundvierzig", "achtundvierzig", "neunundvierzig",                "fünfzig", "einundfünfzig", "zweiundfünfzig", "dreiundfünfzig", "vierundfünfzig", "fünfundfünfzig", "sechsundfünfzig", "siebenundfünfzig", "achtundfünfzig", "neunundfünfzig",                "sechzig", "einundsechzig", "zweiundsechzig", "dreiundsechzig", "vierundsechzig", "fünfundsechzig", "sechsundsechzig", "siebenundsechzig", "achtundsechzig", "neunundsechzig",                "siebzig", "einundsiebzig", "zweiundsiebzig", "dreiundsiebzig", "vierundsiebzig", "fünfundsiebzig", "sechsundsiebzig", "siebenundsiebzig", "achtundsiebzig", "neunundsiebzig",                "achtzig", "einundachtzig", "zweiundachtzig", "dreiundachtzig", "vierundachtzig", "fünfundachtzig", "sechsundachtzig", "siebenundachtzig", "achtundachtzig", "neunundachtzig",                "neunzig", "einundneunzig", "zweiundneunzig", "dreiundneunzig", "vierundneunzig", "fünfundneunzig", "sechsundneunzig", "siebenundneunzig", "achtundneunzig", "neunundneunzig"        };         int index = 0;        int abstand = 0;        while (index < zahlwoerter.length) {            if (index > 0) {                System.out.print(", ");            }            System.out.print(zahlwoerter[index]);            abstand += 1;            index += abstand;        }        System.out.println();    }}
LegendeDas ganze Programm.