Correction TP 4 : Types de donn´ees abstraits s´equenciels
Licence 2 MASS semestre 2, 2007/2008
Exercice 1 : Liste d’´etudiants
lettre( m,i) : retourne la lettre num´ero idu mot m
Algorithme etudiant(l: liste de mot) : liste de mot
ebut
si listeEstVide?(l)alors
retourner listeVide()
sinon
si lettre(listeTete(l), ’m’) alors
retourner listeCons(listeTete(l), etudiant(listeQueue(l)))
sinon
retourner etudiant(listeQueue(l))
fin si
fin si
fin
Exercice 2 : Maximums
a- Algorithme maximum(l: liste de r´eel) : eel
ebut
si listeEstVide?(l)alors
retourner 0
sinon
si listeEstVide?(listeTete(l)) alors
retourner listeTete(l)
sinon
retourner max2(listeTete(l), maximum(listeQueue(l)))
fin si
fin si
fin
et il faut alors d´efinir aussi l’algorithme max2 :
Algorithme max2(a, b : r´eel) : r´eel
ebut
si a < b alors
retourner b
sinon
retourner a
fin si
fin
b- Algorithme maximumListes(l: liste de listes de r´eel) : liste de eel
1
ebut
si listeEstVide?(l)alors
retourner listeVide()
sinon
retourner listeCons(maximum(listeTete(l)), maximumListes(listeQueue(l)))
fin si
fin
Exercice 3 : Distribution de feuilles
Algorithme distribution(p,p1,p2: pile de feuilles) : (pile de feuilles, pile de feuilles)
ebut
si pileEstVide?(p)alors
retourner (p1, p2)
sinon
retourner distribution(depiler(p), p2, empiler(sommet(p), p1))
fin si
fin
Exercice 4 : Couples
coupleCons : typeEl´ement1 ×typeEl´ement2 couple
construit un couple d’´el´ements
premier : couple typeEl´ement1
donne le premier ´el´ement du couple
second : couple typeEl´ement2
donne le second ´el´ement du couple
Les couples peuvent ˆetre utiliser pour repr´esenter par exemple les coordonn´ees de points du plan, les
noms et pr´enom de personnes, etc.
Exercice 5 : Longueur d’une ligne bris´ee
On utilise le TDA couple d´efini dans l’exercice pr´ec´edent.
Algorithme longueur(l: liste de couples de deux r´eels) : eel
ebut
si listeEstVide(L)alors
retourner 0
sinon
retourner longueurAvecPoint(listeTete(l), listeQueue(l))
fin si
fin
Algorithme longueurAvecPoint(point : couple de reel, l: liste de couples de deux r´eels) : r´eel
ebut
si listeEstVide?(L)alors
retourner 0
sinon
2
retourner distance(point, listeTete(l)) + longueurAvecPoint(listeTete(l), listeQueue(l))
fin si
fin
Algorithme distance(point1, point2 : couple de reels) : r´eel
ebut
retourner p(premier(point1) premier(point2))2+ (second(point1) second(point2))2
fin
Exercice 6 : File avec priorit´e
L’algorithme pourrait ressembler `a insertion mais en fait beaucoup plus technique car enfiler ajoute `a
la fin.
Algorithme ajout(c: couple, f: file de couples) : file de couples
ebut
retourner ajoutTerm(fileVide(), c,f)
fin
Algorithme ajoutTerm(fterm : file de couples, c: couple, f: file de couples) : file de couples
ebut
si fileEstVide?(f)alors
retourner enfiler(c,fterm)
sinon
si second(c)second(fileTete(f)) alors
retourner ajoutTerm(enfiler(fileTete(f), f term), c, defiler(f))
sinon
retourner ajoutTerm(enfiler(c,f term), fileTete(f), defiler(f))
fin si
fin si
fin
Exercice 7 : Polynomes
Algorithme somme(P1,P2: liste de couple) : liste de couple
ebut
variable :m1,m2: couple
si listeEstVide?(P1)alors
retourner P2
sinon
si listeEstVide?(P2)alors
retourner P1
sinon
m1 listeTete(P1)
m2 listeTete(P2)
si second(m1) ¡ second(m2)alors
retourner listeCons(m2, somme(P1, listeQueue(P2)))
sinon
si second(m1) = second(m2)alors
retourner listeCons(coupleCons(premier(m1) + premier(m2), second(m1)), somme(listeQueue(P1),
listeQueue(P2)))
3
sinon
retourner listeCons(m1, somme(listeQueue(P1), P2))
fin si
fin si
fin si
fin si
fin
4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !