Vous êtes sur la page 1sur 5

TD Algorithme

Niveau: 1ère année MIM Année universitaire: 2020/2021

PROCÉDURES ET FONCTIONS
EXERCICE 1
Écrire une fonction qui compare deux tableaux d’entiers R1 et R2, de taille maximale 50, et renvoie
vrai si R1 et R2 sont identiques et faux sinon. Deux tableaux sont identiques s’ils sont la même
taille et qu’ils contiennent les mêmes valeurs aux mêmes indices.

EXERCICE 2
On dispose de deux tableaux A et B de tailles respectives N et M, triés par ordre croissant. Écrire
une procédure Fusionner qui permet de créer un tableau FUS trié par ordre croissant en fusionnant
les deux tableaux A et B
Indication : Lorsque l’un des deux tableaux A ou B est épuisé, il s’agit t de recopier les éléments
restants de l’autre tableau dans le tableau FUS.

EXERCICE 3
1. Écrire une procédure (ou une fonction) qui permet de créer un tableau d’entier de taille
maximale 100.
2. Écrire une procédure (ou une fonction) qui permet de trier un tableau d’entier de taille
maximale 100 en utilisant la méthode du tri à bulles.
3. Écrire une procédure (ou une fonction) qui permet de supprimer les doublons d’un tableau
d’entiers trié, de taille maximale 100.
4. Écrire une procédure (ou une fonction) qui permet de rechercher si une valeur existe dans un
tableau trié en utilisant la méthode de recherche dichotomique.
5. Écrire une procédure (ou une fonction) qui ajoute une valeur dans un tableau trié sans
doublons tout en le gardant trié sans doublons.

1
6. Écrire une procédure (ou une fonction) qui supprime une valeur dans un tableau trié sans
doublons.

Écrire l’algorithme qui utilise les fonctions ci-dessus pour permettre à un utilisateur de créer un
tableau, de le trier et d’en supprimer les doublons. Puis selon son choix, et autant qu’il veut, vérifier
l’existence d’une valeur dans le tableau, rajouter une valeur au tableau et supprimer une valeur du
tableau.

EXERCICE 4
Écrire une procédure qui permet d’insérer un tableau d’entiers T2 dans un autre tableau d’entiers T1 à
un indice donné I. T1 et T2 contiennent respectivement N1 et N2 éléments.
Exemple

LA RÉCURSIVITÉ

EXERCICE 1
Écrire un algorithme qui permet de calculer la somme de n éléments consécutifs. Cet algorithme utilise
une fonction récursive nommée Addition qui a comme argument en entrée un entier x strictement positif
et elle renvoie la somme des x éléments, sachant que :

EXERCICE 2
Écrire un algorithme qui permet de tester si un entier est multiple d’un autre. Cet algorithme utilise
une fonction récursive : mult qui a comme argument en entrée, deux entiers x et y et elle renvoie
vrai si x et multiple de y et faux sinon, sachant que :

2
EXERCICE 3
Écrire un algorithme qui permet de calculer et d’afficher le PGCD de deux entiers a et b (>=0). Cet
algorithme utilise une fonction récursive : pgcd qui a comme argument en entrée, deux entiers x et y
et elle retourne le pgcd de x et y sachant que :

EXERCICE 4
Écrire une fonction récursive nommée Puissance qui permet de calculer la puissance entière d’un

nombre réel : an (n 0), définie par :

EXERCICE 5
Écrire une fonction récursive nommée Sym_tab qui permet de tester si un tableau de taille n est
symétrique ou non. Un tableau T est dit symétrique si et seulement si :

La fonction Sym_tab a comme argument en entrée un tableau T, l’indice i du premier élément


du tableau, l’indice j du dernier élément du tableau et la taille n du tableau. Une condition
nécessaire est que les éléments extrêmes (le premier et le dernier) soient identiques et que le sous
tableau privé des extrêmes soit également symétrique.

Remarque : le type Tab est défini comme suit : Tab = tableau [1..100] d’entier.

EXERCICE 6
Écrire une procédure récursive nommée Tri_bulle_rec qui permet de trier un tableau T de taille n
dans l’ordre décroissant

3
LES LISTES SIMPLEMENT CHAÎNÉES

EXERCICE 1
Définir les types maillon et liste permettant de manipuler une liste de nombres réels.

EXERCICE 2
Écrire la procédure InsertTrié qui permet d’ajouter une valeur réelle val à une liste simplement
chaînée donnée par l’adresse de son premier maillon: premier, tout en la gardant triée dans l’ordre
croissant.

EXERCICE 3
Écrire la procédure AfficheList qui affiche le contenu d’une liste simplement chaînée dans l’ordre
inverse de ses éléments (de la queue vers la tête).
Par exemple, si on considère la liste suivante :

la procédure affichera : 5.2 2.7 2.5 4 1.3

EXERCICE 4
Écrire une fonction récursive qui permet de renvoyer Vrai si un réel val existe dans une liste
simplement chaînée donnée par l’adresse de son premier élément et Faux sinon.

EXERCICE5
Une chaîne de bits b (b = bn-1…b0) de longueur n ≥1 est représentée par une liste chaînée de bits où

la tête représente le bit de poids fort ( bn-1), dont la définition est la suivante :
Type
maillon = Enregistrment
Valeur : entier
Suivant : ^maillon
FinEnregistrment
Liste =maillon

Par exemple le nombre binaire 11010 est représenté par la liste L1.

4
1. Écrire la fonction InsertTete qui permet d’insérer un maillon de valeur val en tête d’une liste
donnée par l’adresse de son premier maillon.
2. Donner les instructions pertmettant de construire la liste L1 de l’exemple (11010).
3. La valeur, notée ValChaine(b) d’une chaîne de bits de longueur n≥1 est le nombre
naturel dont la représentation binaire est cette chaîne. Par exemple :

ValChaine(00001111) = 15 et ValChaine(01010101) = 85

La fonction ValChaine est définie par l’expression suivante :

Donner ValChaine(1101) et ValChaine(111101)

4. Écrire la fonction récursive puissance qui permet pour deux entiers n ≥0 et m≥ 1 de renvoyer

mn.
5. Écrire la fonction récursive LongListe qui renvoie le nombre d’éléments d’une liste donnée
par l’adresse de son premier maillon.
6. Écrire la fonction ValChaine qui accepte une liste donnée par l’adresse de son premier
maillon et renvoie la valeur de la chaîne représentée par cette liste.
7. La distance de Hamming, notée H(c,d) entre deux chaînes de bits c et d de longueur n 1 est
le nombre de positions où les bits correspondants sont différents.
Par exemple :
H(00001111; 01010101)
Écrire la fonction H qui accepte deux listes données par les adresses de leurs premiers maillons
et renvoie la distance de Hamming entre les deux chaînes représentées par ces deux listes.
8. Deux chaînes de bits c et d sont dits adjacents s’ils sont à une distance de Hamming égal à 1.
Écrire la fonction Adjacents qui accepte deux listes données par les adresses de leurs
premiers maillons et renvoie 1 si c et d sont adjacents, 0 sinon.

Vous aimerez peut-être aussi