Introduction à l’Algorithmique
- le 12 Janvier 2018 à 16h, Durée : 1 heure
Dans cet examen, nous représentons une liste par la structure suivante :
structure liste = {int tab[], int MAX, int deb, int fin}.
MAX représente la taille maximale du tableau de stockage tab et les éléments de la liste sont
stockés entre les indices deb et fin-1, avec la taille de la liste valant f in−deb. Pour manipuler
la structure liste, vous pouvez accéder aux différents champs. Vous n’avez pas besoin d’écrire
les algorithmes des fonctions de manipulation de la liste, que nous rappelons ci-dessous :
— creerListe (int m) qui crée une liste vide l et telle que la taille de l.tab soit m,
— listeVide (liste l) qui retourne True si la liste l est vide, sinon False,
— insererDebut (liste l, int x) et insererFin (liste l, int x) qui permettent
d’insérer un élément x en début et fin de liste, respectivement.
— supprimerDebut (liste l) et supprimerFin (liste l) qui permettent de suppri-
mer le début et la queue de la liste, respectivement.
p. 1/2
Function mystere(int T [n])
int i := 0
for j ← 0 to n − 1 do
if T [n] mod 2 == 0 then
int tmp := T [i]
T [i] := T [j]
T [j] := tmp
i := i + 1
end
end
return i
2. Que fait la fonction mystere ? (1 pt)
Exercice 3
On considère un tableau T d’entiers de taille n. Un tel tableau est dit correct si les valeurs
stockées dans le tableau sont comprises entre 0 et n − 1 et chaque nombre 0 ≤ i ≤ n − 1
apparait exactement une fois dans le tableau. Un cycle dans un tableau correct T est une suite
d’indices i1 , i2 , . . . , ip telle que pour tout 1 ≤ j ≤ p − 1 on a T [ij ] = ij+1 , et T [ip ] = i1 .
Par exemple, pour le tableau 7 8 4 3 0 1 9 2 5 6 on a 4 cycles
— 0, 7, 2, 4,
— 1, 8, 5,
— 3,
— 6, 9
1. Écrire une fonction qui prend en paramètre un tableau d’entiers T de taille n et retourne
True si c’est un tableau correct et False sinon. (2 pts)
2. Écrire une fonction qui prend en entrée un tableau d’entiers T de taille n et retourne
le nombre de cycles de T si c’est un tableau correct, sinon −1. (3 pts)
1. Ecrire une fonction qui prend une liste et qui retourne une liste ne contenant que les
entiers multiples de 5. (2 pts)
2. Ecrire une fonction qui prend une liste l et qui retourne la somme des carrés des
éléments de l. (2 pts)
3. Ecrire une fonction qui prend une liste l et qui retourne la liste dans l’ordre inversé.
Ainsi, si la liste c’est [1,5,7,10], la liste retournée devra être [10,7,5,1]. (3 pts)
p. 2/2