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
- An − i + 1
- Bn − i
- 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 ».
Continuer : 9 autres questions sur Bases de la programmation (trace de pseudo-code)