MINT lernen

Übungen: Zweidimensionale Reihungen

Zehn Übungen zu zweidimensionalen Reihungen — von Zeile und Spalte bis zum Turnierplan.

Dein Fortschritt:
0 / 0 Aufgaben
1

Übungsaufgaben

Zehn Übungen zu Tabellen, Indizes und verschachtelten Schleifen — von AFB I bis AFB III. Jede Übung gibt sofort Rückmeldung; wenn Sie nicht weiterkommen, helfen die gestuften Tipps.

A1
Die Tribüne in Zahlen
AFB I

Die Tribüne einer Sporthalle hat 6 Reihen mit je 10 Plätzen: int[][] tribuene = new int[6][10]; Geben Sie die passenden Werte und Zugriffe an.

Wählen Sie in jedem Menü den passenden Eintrag und prüfen Sie dann alle auf einmal.

tribuene.length hat den Wert .

tribuene[0].length hat den Wert .

Der Platz ganz hinten rechts (letzte Reihe, letzter Platz) ist .

Insgesamt hat die Reihung Elemente.

new int[6][10] legt 6 Zeilen mit je 10 Spalten an. tribuene.length zählt die Zeilen, tribuene[0].length die Spalten. Der letzte Platz hat in beiden Richtungen den Index Länge − 1, insgesamt gibt es \(6\cdot10=60\) Elemente.
Ansatz: Die erste Zahl in new int[6][10] ist die Zeilenzahl.
Weiter: Letzter Index = Länge − 1, in jeder Richtung.
A2
Element, Zeile oder Abbruch?
AFB I

Ein Lagerregal hat 4 Böden mit je 7 Fächern: int[][] regal = new int[4][7]; Ordnen Sie jeden Ausdruck zu.

Ziehen Sie jede Karte in den passenden Korb — oder wählen Sie sie mit Enter aus und drücken dann die Ziffer des Korbs (0 legt sie zurück).
1ein einzelnes Element
2Abbruch: Index zu groß
3eine ganze Zeile
Gültig sind Zeilen 0 bis 3 und Spalten 0 bis 6. regal[6][3] vertauscht Zeile und Spalte — 6 ist als Zeilenindex zu groß. Mit nur einem Index erhält man eine ganze Zeile, also eine eindimensionale Reihung mit 7 Plätzen.
Ansatz: Der erste Index ist die Zeile (0 bis 3), der zweite die Spalte (0 bis 6).
Weiter: Ein Ausdruck mit nur einem Klammerpaar liefert eine Zeile.
A3
Stimmt's? — Klausurnoten
AFB I

Eine Lehrkraft speichert die Noten von 25 Schülerinnen und Schülern in 4 Klausuren: double[][] klausur = new double[25][4]; (Zeile = Person, Spalte = Klausur). Nennen Sie zu jeder Aussage, ob sie stimmt.

5 Aussagen nacheinander. Eine falsche Einschätzung reicht — dann starten Sie die Serie mit „Neue Runde“ neu.
Aussage 1 von 5

Merkhilfe: klausur.length — wie viele Zeilen (Personen); klausur[z].length — wie lang eine Zeile ist (Klausuren).
Ansatz: Was zählt klausur.length — Personen oder Klausuren?
Weiter: Eine Zeile ist selbst eine Reihung.
A4
Spaltenweise ausgeben
AFB II

Zwei Kassen eines Kiosks zählen in drei Stunden ihre Kunden: int[][] kasse = { {4, 1, 7}, {2, 9, 3} };

for (int s = 0; s < kasse[0].length; s++) {
    for (int z = 0; z < kasse.length; z++) {
        System.out.print(kasse[z][s] + " ");
    }
}

Wenden Sie die Schleifen an: Tragen Sie für jede Ausgabe den Zeilenindex z und den ausgegebenen Wert ein.

Füllen Sie alle Felder aus und prüfen Sie dann. Enter in einem Feld prüft ebenfalls.
Ausgabe Nr.123456
s001122
z
Wert
Außen läuft s, innen z: Die innere Schleife wechselt am schnellsten. Ausgabe: 4 2 1 9 7 3 — erst beide Werte der Spalte 0, dann Spalte 1, dann Spalte 2.
Ansatz: Welche Variable ändert sich bei jeder Ausgabe, welche nur alle zwei Ausgaben?
Weiter: z pendelt zwischen 0 und 1, s steigt langsam.
A5
Kegelabend: Ausdruck und Wert
AFB II

Drei Personen kegeln vier Runden: int[][] wurf = { {3, 5, 2, 7}, {6, 1, 0, 2}, {8, 4, 9, 5} }; Bestimmen Sie den Wert jedes Ausdrucks und verbinden Sie.

Ansatz: Erst die Zeile suchen, dann in ihr die Spalte.
Weiter: Innere Klammern zuerst ausrechnen.
A6
Fehlersuche: Umsatz pro Tag
AFB II

In int[][] verkauf steht für jede Filiale (Zeile) der Umsatz an jedem Tag (Spalte). Mia will den Gesamtumsatz jedes Tages berechnen. Analysieren Sie ihren Code — zwei Zeilen sind falsch.

In diesem Code stecken Fehler. Klicken Sie genau die falschen Zeilen an — die richtigen müssen stehen bleiben.
Die Ergebnis-Reihung braucht so viele Plätze wie es Spalten gibt. Die Schleifen selbst sind richtig — außen die Spalte, innen die Zeile —, aber der Zugriff muss trotzdem [z][s] heißen. Bei nicht quadratischen Tabellen führen beide Fehler zum Abbruch.
Ansatz: Wie viele Tage gibt es — verkauf.length oder verkauf[0].length?
Weiter: Die Reihenfolge der Indizes hängt nicht von der Reihenfolge der Schleifen ab.
A7
Schulsprecherwahl
AFB II

Drei Klassen wählen zwischen vier Kandidaten (Spalten 0 bis 3): int[][] stimmen = { {12, 8, 5, 9}, {7, 11, 6, 10}, {9, 6, 13, 4} }; Berechnen Sie die Werte.

Arbeiten Sie die Kette Schritt für Schritt ab: Erst wenn ein Schritt stimmt, wird der nächste freigeschaltet. Enter prüft.
  1. Zeilensumme von Zeile 1
  2. Spaltensumme von Spalte 2
  3. Gesamtzahl aller Stimmen
  4. Index des Kandidaten mit den meisten Stimmen
Spaltensummen: 28, 25, 24, 23 — Kandidat 0 gewinnt knapp, obwohl er in keiner Klasse außer der ersten vorn liegt. Genau dafür braucht man die Spaltensummen: Die größte Einzelzahl (13) sagt nichts über den Sieger.
Ansatz: Zeilensumme: waagerecht addieren; Spaltensumme: senkrecht.
Weiter: Für den Sieger alle vier Spaltensummen berechnen und vergleichen.
A8
Freie Stellplätze zählen
AFB III Mix

In einem Parkhaus steht boolean[][] besetzt für Ebenen (Zeilen) und Stellplätze (Spalten); true heißt besetzt. Der Code soll die freien Plätze zählen. Überprüfen Sie ihn und korrigieren Sie die beiden fehlerhaften Zeilen.

Klicken Sie jede fehlerhafte Zeile an und tragen Sie im aufklappenden Feld die korrigierte Zeile ein. Geprüft werden Auswahl und Korrektur (Leerzeichen sind egal).
Die innere Grenze ist die Zahl der Stellplätze einer Ebene, besetzt[e].length. Gezählt wird wie in 2.1.2: Der Zähler wächst bei jedem Treffer um 1 — frei + p würde die Platznummern addieren.
Ansatz: Welche Länge braucht die innere Schleife — die der Ebenen oder die der Stellplätze?
Weiter: Beim Zählen wächst der Zähler immer nur um 1.
A9
Welche Schleifen besuchen alles?
AFB III

Gegeben ist eine rechteckige Tabelle int[][] feld beliebiger Größe (mindestens eine Zeile). Untersuchen Sie, welche Schleifenpaare jedes Element genau einmal lesen, ohne abzubrechen.

Mehrere Antworten sind richtig. Markieren Sie alle zutreffenden und klicken Sie dann auf „Prüfen“.
Entscheidend ist, dass jeder Index zu seiner eigenen Länge passt: z zur Zeilenzahl, s zur Spaltenzahl. <= Länge − 1 ist gleichwertig zu < Länge. Die beiden falschen Varianten funktionieren nur bei quadratischen Tabellen — bei 2 × 5 brechen sie ab oder lassen Spalten aus.
Ansatz: Testen Sie jede Variante gedanklich mit einer Tabelle aus 2 Zeilen und 5 Spalten.
Weiter: Vier Varianten sind richtig, auch for-each für Zeilen und Werte.
A10
Turnierplan
AFB III Trick

Für ein Turnier mit vier Teams erzeugt ein Programm die Spielpaarungen:

int spiele = 0;
for (int z = 0; z < 4; z++) {
    for (int s = z + 1; s < 4; s++) {
        spiele++;          // Team z gegen Team s
    }
}

Ermitteln Sie den Wert von spiele am Ende.

Tragen Sie das Ergebnis ein — Enter prüft direkt.
Die innere Schleife beginnt bei z + 1: Für z = 0 läuft sie 3-mal, dann 2-, 1- und 0-mal — zusammen \(3+2+1+0=6\). Jede Paarung kommt so genau einmal vor, und kein Team spielt gegen sich selbst. Die 16 wäre richtig, wenn die innere Schleife immer bei 0 begänne.
Ansatz: Zählen Sie die Durchläufe der inneren Schleife für jedes z einzeln.
Weiter: Bei z = 3 startet die innere Schleife bei 4 — wie oft läuft sie dann?