Bases de la programmation (trace de pseudo-code)

Le programme suivant devait inverser l'ordre des éléments du tableau a. Les indices du tableau commencent à 1. Que contient a après l'exécution ?

integer array: a ← {1, 2, 3, 4, 5, 6}
integer: n ← 6, t
for (i from 1 to n step 1)
  t ← a[i]
  a[i] ← a[n − i + 1]
  a[n − i + 1] ← t
endfor
  1. A{6, 5, 4, 3, 2, 1}
  2. B{6, 5, 4, 4, 5, 6}
  3. C{1, 2, 3, 4, 5, 6}
Afficher la réponse et l'explication

Réponse : C. {1, 2, 3, 4, 5, 6}

Les trois lignes à l'intérieur de la boucle échangent a[i] et a[n − i + 1]. Pour i = 1 à 3, la première et la seconde moitié sont échangées, ce qui donne à ce stade {6, 5, 4, 3, 2, 1}. Mais la valeur finale est n : pour i = 4 à 6, les paires a[4] et a[3], a[5] et a[2], puis a[6] et a[1] sont échangées une seconde fois, ce qui rétablit l'ordre d'origine. Pour inverser le tableau, on prend n ÷ 2 (3 pour n = 6) comme valeur finale, afin que chaque paire ne soit échangée qu'une seule fois.

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

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

  1. Les indices du tableau commencent à 1. Que contient le tableau a après l'exécution du programme suivant ?
  2. Les indices du tableau commencent à 1. Le programme suivant compare des éléments voisins. Quelle est la valeur de c après son exécution ?
  3. m[i, j] désigne l'élément de la ligne i et de la colonne j du tableau à deux dimensions m, et les indices commencent à 1. Quelle est la valeur de s après l'exécution du programme suivant ?
  4. Le programme suivant copie les éléments du tableau à deux dimensions m, de 4 lignes et 5 colonnes, dans le tableau b de 20 éléments. m[i, j] désigne l'élément de la ligne i et de la colonne j, et les indices commencent à 1. À quel indice de b m[3, 2] est-il stocké ?
  5. Les indices du tableau commencent à 1, et + concatène des chaînes. Quelle est la valeur de r après l'exécution du programme suivant ?