Bases de la programmation (trace de pseudo-code)

La fonction isPal suivante renvoie true si les caractères du tableau de chaînes s se lisent de la même façon dans les deux sens (un palindrome). Les indices du tableau commencent à 1. Que faut-il écrire à la place de 【a】 dans le programme ?

○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
Afficher la réponse et l'explication

Réponse : A. n − i + 1

Le i-ème caractère est comparé au i-ème caractère en partant de la fin. Le premier en partant de la fin est s[n] et le deuxième s[n − 1] : le i-ème en partant de la fin est donc s[n − i + 1]. Il suffit de comparer la première moitié : pour n = 5, n ÷ 2 = 2,5, donc i = 1 et 2 comparent s[1] avec s[5] et s[2] avec s[4] (le caractère du milieu, s[3], n'a pas besoin d'être comparé). Avec n − i, la comparaison est décalée d'une unité, et même le palindrome « level » renvoie false, car s[1], « l », est comparé à s[4], « e ».

S'entraîner sur ce thème Retour au thème

Autres questions sur Bases de la programmation (trace de pseudo-code)

  1. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Quelle est la valeur de retour de la fonction f suivante appelée sous la forme f(9087) ?
  2. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Quelle est la valeur de retour de la fonction toBin suivante appelée sous la forme toBin(12) ?
  3. Le programme suivant soustrait l'un de l'autre les deux entiers a et b jusqu'à ce qu'ils soient égaux. Quelle est la valeur de k après son exécution ?
  4. La fonction isLeap suivante renvoie true si l'année y est bissextile. and est évalué avant or. Pour quelle valeur de y isLeap(y) renvoie-t-elle true ?
  5. ÷ est la division ; quand le résultat est affecté à une variable entière (y compris un argument de fonction), la partie fractionnaire est supprimée. Lorsque la fonction pow suivante est appelée sous la forme pow(2, 10), combien de fois pow est-elle appelée, premier appel compris ?