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
  1. An − i + 1
  2. Bn − i
  3. 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.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Programmierung (Pseudocode nachverfolgen)

  1. ÷ 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?
  2. ÷ 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?
  3. Das folgende Programm subtrahiert die beiden ganzen Zahlen a und b voneinander, bis sie gleich sind. Welchen Wert hat k nach der Ausführung?
  4. Die folgende Funktion isLeap gibt true zurück, wenn das Jahr y ein Schaltjahr ist. and wird vor or ausgewertet. Für welches y gibt isLeap(y) true zurück?
  5. ÷ ist die Division; wird das Ergebnis einer ganzzahligen Variablen (auch einem Funktionsargument) zugewiesen, wird der Nachkommaanteil abgeschnitten. Wie oft wird pow einschließlich des ersten Aufrufs aufgerufen, wenn die folgende Funktion pow als pow(2, 10) aufgerufen wird?