Vous êtes sur la page 1sur 8

L2 Informatique Algorithmique et Structures de données 2017-2018

Matricule : Nom : Prénom : Groupe :

Rattrapage (Durée 1.5 h)


Documents et Téléphones Portables Interdits.
Exercice1 (1 + 1 + 0.5 + 1 + 1 + 0.5 + 1.5
1.5 = 6.5
6.5 points):
Soit R un Arbre Binaire de Recherche (ABR) contenant des entiers.
1. Construire cet arbre à partir des valeurs suivantes : 50, 40, 20, 65, 55, 45, 10, 70, 25.
2. Ecrire la fonction « InsererABR » qui permet d’insérer une valeur dans un ABR
3. Déduire la procédure « CreerABR » qui permet de créer un ABR à partir de n valeurs lues.
4. Ecrire la procédure récursive « Requete_interval » qui permet d’afficher en ordre décroissant toutes
les valeurs d’un ABR comprises entre A et B ([A, B]) sachant que A<B.
5. Ecrire la procédure itérative « MinMax » qui permet de retourner les valeurs max et min de l’arbre R.
6. Donner le résultat de la suppression du minimum de l’arbre R de la question 1 (répéter l’opération
deux fois consécutives).
7. Ecrire la fonction « SupprimerMin » qui permet de supprimer le minimum de l’arbre R.
Remarque : Les algorithmes doivent être écrits en utilisant le modèle de l’arbre : CreerNoeud, LibererNoeud, Info,
FG, FD, aff_Info, aff_FG, aff_FD.
Solution Exercice 1 :

1/8
Solution Exercice 1 :

2/8
Exercice 2 (1 + 1.5
1.5 + 1.5 = 4 points) :

Soit « IND » un index des mots qui est défini par un tableau « Tab »de taille n où chaque case du tableau
« Tab » contient un entier qui représente la longueur du mot et un pointeur vers une liste linéaire chaînée
unidirectionnelle. Cette liste contient des mots de même longueurs à raison d’un mot par maillon. Le
tableau est trié selon l’ordre décroissant de la longueur du mot. Les listes sont triées par ordre alphabétique
(ordre croissant de A à Z).
type maillon = structure Const Max = 100 ;
val : chaîne de caractères type index = structure
suiv : * maillon Tab: Tableau [Max] de case
Fin Queue :entier
type ptrM = * maillon Fin
type case = structure
long : entier
tête :ptrM
Fin

Dans le but de supprimer un mot dans cet index, il est demandé d’écrire les modules suivants:
1. La fonction récursive « RechDichoTab » qui permet de faire la recherche dichotomique et de retourner
l’indice de la case du Tab contenant une longueur donnée (soit x) si elle existe, sinon elle retourne -1.
2. La fonction récursive « SuppLLC » qui permet de supprimer dans une liste linéaire chaînée ordonnée un
mot s’il existe.
3. En utilisant les fonctions précédentes, écrire la procédure « Supprimer (var ID : index, y : chaîne de
caractère) » qui permet de supprimer un mot « y » de l’index « ID ». Si la liste contenant le mot « y » devient
vide alors la case correspondante à sa longueur est supprimée du tableau Tab.
INDICATION. Vous pouvez utiliser les fonctions suivantes :
a. Longch(ch : chaine de caractère) : entier qui retourne le nombre de caractère dans ch.
b. Cmpch (ch1, ch2 : chaine de caractère) : entier qui compare les chaînes ch1 et ch2 et retourne une valeur négative
si (lexicalement) ch1 < ch2, nulle si ch1 = ch2 et positive si ch1 > ch2.

Solution Exercice 2 :

3/8
Solution Exercice 2 :

4/8
L2 Informatique Algorithmique et Structures de données 2017-2018

Matricule : Nom : Prénom : Groupe :

Exercice 3 (1 + 1.5 + 2.
2.5 = 5 points)
Un polynôme peut être représenté par une LLC triée dans l’ordre décroissant des puissances où chaque
maillon contient un monôme qui est représenté par un exposant et un coefficient (non nul). Par
exemple, le polynôme P(x) = 2x5+3x4+ 0.5x2+ 1 est représenté par la liste suivante :
type monome = structure type maillon = structure
coef :réel val : monome
puiss : entier positif suiv : * maillon
Fin Fin
type ptrM = * maillon

En utilisant le modèle de LLC et sans créer des nouveaux maillons, écrire :

1. La procédure « Integrale (P) » qui permet de calculer l’intégrale du polynôme P.


2. La procédure « Derive(P) » qui permet de calculer la dérivée du polynôme P.
3. La procédure « Somme (P, Q) » qui permet de calculer la somme de deux polynômes P et Q (P P+Q),
sachant que le degré de P est supérieur ou égal au degré de Q.
Rappelons que, si P(x) = 2x5+3x4+ 0.5x2+1 et Q(x) = 2x4- 0.5x2- 3x - 5 alors
.
- L’intégrale de P :
- La dérivée de P : 10 12
- La somme de P et Q : P P+Q = 2x5+5x4-3 x-4
Remarque : Les algorithmes doivent être écrits en utilisant le modèle de liste: Allouer, Liberer, valeur,
suivant, aff_val, aff_suiv.
Solution Exercice
Exercice 3 :

5/8
Solution Exercice 3 :

6/8
Exercice 4 (2 + 2.
2.5 = 4.5 points) :

Soit P une pile d’entiers implémentée de manière statique en utilisant un tableau de taille « max ».

1. Rappeler la structure de données et l’implémentation du modèle (InitPile, PileVide, PilePleine,


Sommet, Empiler et Depiler) de ce type de pile.
2. Soient deux piles statiques P1 et P2
d’entiers triés dans l’ordre croissant (le
maximum est au sommet). En utilisant le
modèle de pile de la question précédente,
écrire une fonction qui permet de créer
une pile P3 contenant les valeurs de P1
qui n’existent pas dans P2 et les valeurs de
P2 qui n’existent pas dans P1. La pile P3
obtenue est aussi triée dans l’ordre
croissant.

Solution Exercice 4 :

7/8
Solution Exercice 4 :

Bon courage
8/8

Vous aimerez peut-être aussi