Basis van programmeren (pseudocode traceren)

De volgende functie isPal geeft true terug als de tekens in de stringarray s van voren en van achteren gelezen hetzelfde zijn (een palindroom). Array-indexen beginnen bij 1. Wat moet er op de plaats van 【a】 in het programma staan?

○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
Antwoord en toelichting tonen

Antwoord: A. n − i + 1

Het i-de teken wordt vergeleken met het i-de teken van achteren. Het 1e van achteren is s[n] en het 2e is s[n − 1], dus het i-de van achteren is s[n − i + 1]. Het is genoeg om de eerste helft te vergelijken: voor n = 5 is n ÷ 2 = 2,5, dus i = 1 en 2 vergelijken s[1] met s[5] en s[2] met s[4] (het middelste s[3] hoeft niet te worden vergeleken). Met n − i zit de vergelijking er één naast, en zelfs het palindroom „level” geeft false, omdat s[1], „l”, wordt vergeleken met s[4], „e”.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van programmeren (pseudocode traceren)

  1. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Wat is de retourwaarde als de volgende functie f wordt aangeroepen als f(9087)?
  2. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Wat is de retourwaarde als de volgende functie toBin wordt aangeroepen als toBin(12)?
  3. Het volgende programma trekt de twee gehele getallen a en b van elkaar af tot ze gelijk zijn. Wat is de waarde van k nadat het is uitgevoerd?
  4. De volgende functie isLeap geeft true terug als het jaar y een schrikkeljaar is. and wordt vóór or geëvalueerd. Voor welke y geeft isLeap(y) true terug?
  5. ÷ staat voor deling; bij toekenning aan een variabele van het type integer (ook een argument) worden de cijfers achter de komma weggelaten. Hoe vaak wordt pow aangeroepen, de eerste aanroep meegerekend, als de volgende functie pow wordt aangeroepen als pow(2, 10)?