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
  1. A7
  2. B11
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. Die Array-Indizes beginnen bei 1, und + verkettet Zeichenketten. Welchen Wert hat r, nachdem das folgende Programm ausgeführt wurde?
  2. Die folgende Funktion isPal gibt true zurück, wenn die Zeichen im Zeichenketten-Array s vorwärts und rückwärts gelesen gleich sind (ein Palindrom). Die Array-Indizes beginnen bei 1. Was gehört an die Stelle von 【a】 im Programm?
  3. ÷ ist die Division; wird das Ergebnis einer ganzzahligen Variablen (auch einem Funktionsargument) zugewiesen, wird der Nachkommaanteil abgeschnitten. Was gibt die folgende Funktion f beim Aufruf f(9087) zurück?
  4. ÷ ist die Division; wird das Ergebnis einer ganzzahligen Variablen (auch einem Funktionsargument) zugewiesen, wird der Nachkommaanteil abgeschnitten. Was gibt die folgende Funktion toBin beim Aufruf toBin(12) zurück?
  5. Das folgende Programm subtrahiert die beiden ganzen Zahlen a und b voneinander, bis sie gleich sind. Welchen Wert hat k nach der Ausführung?