Vous êtes sur la page 1sur 2

Université Clermont Auvergne Z125AM01, Informatique, S1

Introduction à l’Algorithmique
- le 12 Janvier 2018 à 16h, Durée : 1 heure

Toute réponse doit être justifiée


Machines à mémoire et Documents interdits
Toutes les questions sont indépendantes

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.

Exercice 1 Application Cours


1. Écrire une fonction qui prend en paramètres trois entiers a, b et c et teste si le triangle,
ayant pour longueurs des côtés a, b et c, est un triangle isocèle.
Nous rappelons qu’un triangle est isocèle s’il a deux côtés de même longueur. (2 pts)
2. Écrire une fonction qui prend en paramètres trois entiers n, a et b et retourne la somme
des entiers positifs inférieurs à n et divisibles par a et b. (2 pts)
3. Écrire une fonction qui prend en paramètre un tableau d’entiers T de taille n et qui
retourne l’élément maximum de T. (2 pts)
4. Écrire une fonction qui prend en paramètre une liste l et un élément x et qui teste si
x est un élément de l. (2 pts)

Exercice 2 Trace d’un algorithmique (Bonus)


1. Faites la trace de la fonction mystere pour le tableau T := 0 5 9 2 6 3 (1
pt)

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)

Exercice 4 Utilisation des listes

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

Vous aimerez peut-être aussi