Grundlagen der Programmierung (Pseudocode nachverfolgen)
Das folgende Programm kopiert die Elemente des zweidimensionalen Arrays m mit 4 Zeilen und 5 Spalten in das Array b mit 20 Elementen. m[i, j] ist das Element in Zeile i und Spalte j, und die Indizes beginnen bei 1. An welchem Index von b wird m[3, 2] gespeichert?
integer: k ← 0
for (i from 1 to 4 step 1)
for (j from 1 to 5 step 1)
k ← k + 1
b[k] ← m[i, j]
endfor
endfor
- A7
- B11
- C12
Antwort und Erläuterung anzeigen
Antwort: C. 12
Das äußere i ist die Zeile und das innere j die Spalte; b wird also mit den 5 Elementen von Zeile 1, dann den 5 von Zeile 2 und dann denen von Zeile 3 gefüllt (zeilenweise Reihenfolge, Row-Major). Vor m[3, 2] stehen die 10 Elemente der Zeilen 1 und 2 sowie m[3, 1], daher ist k = 10 + 2 = 12. Allgemein ergibt sich der Index als (i − 1) × 5 + j. Wird die Formel für Indizes ab 0, (i − 1) × 5 + (j − 1), unverändert verwendet, ergibt sich 11, also ein Wert, der um eins daneben liegt.
Weiter: 9 weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)