Grundlagen der Programmierung (Pseudocode nachverfolgen)
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?
○boolean: isPal(string array: s)
integer: n ← length(s)
for (i from 1 to n ÷ 2 step 1)
if (s[i] ≠ s[【a】])
return false
endif
endfor
return true
- An − i + 1
- Bn − i
- Cn + i − 1
Antwort und Erläuterung anzeigen
Antwort: A. n − i + 1
Das i-te Zeichen wird mit dem i-ten Zeichen von hinten verglichen. Das 1. von hinten ist s[n] und das 2. ist s[n − 1]; das i-te von hinten ist also s[n − i + 1]. Es genügt, die erste Hälfte zu vergleichen: Bei n = 5 ist n ÷ 2 = 2,5, daher vergleichen i = 1 und 2 die Zeichen s[1] mit s[5] und s[2] mit s[4] (das mittlere s[3] muss nicht verglichen werden). Mit n − i liegt der Vergleich um eins daneben, und selbst das Palindrom „level“ liefert false, weil s[1], also „l“, mit s[4], also „e“, verglichen wird.
Weiter: 9 weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)