Aufgabenblock — AFB I
Zehn Standardaufgaben zum Reproduzieren: Index und Länge, Elemente lesen, Schleifen nachvollziehen, Suchen und Sortieren von Hand ausführen, Vergleiche zählen. Das sind die sicheren Punkte in jeder Klausur zu Reihungen.
Ein Messprogramm legt für die monatlichen Höchststände eines Flusspegels (in cm) die Reihung int[] pegel = new int[12]; an. Geben Sie den größten gültigen Index und den Wert von pegel[4] direkt nach dem Erzeugen an.
new steht in jedem int-Platz der Standardwert.Lösung anzeigen
new int[12] belegt jeden Platz mit 0 → 11 und 0Eine Fußballmannschaft notiert die geschossenen Tore der letzten sechs Spiele:
int[] tore = {3, 0, 2, 5, 1, 4};Nennen Sie die Werte von tore[3] und tore[tore.length - 2].
tore[0] ist das erste Element. tore.length ist hier 6, also ist tore.length - 2 der Index 4.Lösung anzeigen
tore[3] = 5, tore[6 − 2] = tore[4] = 1 → 5 und 1Ein Schrittzähler speichert die Schritte von vier Tagen. Das Programm wertet sie in einem Durchlauf aus:
int[] schritte = {4200, 6800, 5100, 7300};
int summe = 0;
int viele = 0;
for (int i = 0; i < schritte.length; i++) {
summe = summe + schritte[i];
if (schritte[i] > 5000) {
viele = viele + 1;
}
}Stellen Sie den Ablauf in einer Tracetabelle mit den Spalten i, schritte[i], summe, viele dar und geben Sie die Endwerte ein.
Lösung anzeigen
Wartezeiten (in Minuten) an einer Supermarktkasse:
int posMax = 0;
for (int i = 1; i < wartezeit.length; i++) {
if (wartezeit[i] > wartezeit[posMax]) {
posMax = i;
}
}Bestimmen Sie den Wert von posMax nach der Schleife.
posMax wird nur bei einem echt größeren Wert geändert. Was passiert beim zweiten Wert 15?Lösung anzeigen
Ein Lager hat drei Regale (Zeilen) mit je vier Fächern (Spalten). lager[r][f] ist die Stückzahl in Regal r, Fach f.
| lager | f = 0 | f = 1 | f = 2 | f = 3 |
|---|---|---|---|---|
| r = 0 | 5 | 0 | 12 | 7 |
| r = 1 | 3 | 9 | 1 | 4 |
| r = 2 | 8 | 6 | 2 | 11 |
Entnehmen Sie der Tabelle den Wert von lager[2][1] und geben Sie lager[0].length an.
lager[Zeile][Spalte]. lager.length zählt die Zeilen, lager[0].length die Spalten einer Zeile.Lösung anzeigen
Auf einem Parkplatz werden die Nummern der eingefahrenen Wagen gespeichert:
Die lineare Suche vergleicht von vorn nach hinten und bricht beim ersten Treffer ab. Ermitteln Sie die Anzahl der Vergleiche bei der Suche nach 23 und den Rückgabewert bei der Suche nach 99.
Lösung anzeigen
Eine sortierte Reihung mit Hausnummern einer Straße:
Wenden Sie die binäre Suche nach dem Wert 14 an (mitte = (links + rechts) / 2, ganzzahlig). Wie viele Elemente werden angesehen, und welchen Wert hat mitte beim zweiten Schritt?
links = 0, rechts = 10. Ist haus[mitte] zu groß, gilt danach rechts = mitte − 1, sonst links = mitte + 1.Lösung anzeigen
Die Reihung wird mit Selectionsort aufsteigend sortiert: In jedem Durchlauf wird das Minimum des unsortierten Rests gesucht und mit dem ersten Element des Rests vertauscht.
Skizzieren Sie die Reihung nach jedem Durchlauf. Welcher Wert steht nach dem ersten Durchlauf an Index 3, und wie viele Vergleiche braucht das Verfahren insgesamt?
Lösung anzeigen
Bubblesort vergleicht benachbarte Elemente von links nach rechts und vertauscht sie, wenn das linke größer ist.
Zeichnen Sie die Reihung nach dem ersten Durchlauf als Kästchenreihe. Wie viele Vertauschungen gibt es in diesem Durchlauf, und welcher Wert steht danach an Index 2?
Lösung anzeigen
Berechnen Sie a) die Anzahl der Vergleiche von Selectionsort für 40 Werte und b) die Anzahl der angesehenen Elemente der binären Suche im ungünstigsten Fall für 1000 sortierte Werte.
