(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:2)(cid:3)(cid:4)(cid:5)(cid:6)(cid:7)(cid:8)(cid:9)(cid:5)(cid:3)(cid:1)(cid:10)(cid:5)(cid:11)(cid:8)(cid:12)(cid:8)(cid:3)(cid:11)(cid:11)(cid:3)(cid:1)
(cid:13)(cid:8)(cid:11)(cid:8)(cid:12)(cid:10)(cid:3)(cid:2)(cid:3)(cid:1)(cid:14)(cid:3)(cid:1)(cid:7)(cid:15)(cid:3)(cid:11)(cid:12)(cid:3)(cid:8)(cid:16)(cid:11)(cid:3)(cid:13)(cid:3)(cid:11)(cid:10)(cid:1)(cid:12)(cid:5)(cid:4)(cid:3)(cid:2)(cid:8)(cid:3)(cid:5)(cid:2)(cid:1)(cid:3)(cid:10)(cid:1)(cid:14)(cid:3)(cid:1)
(cid:7)(cid:17)(cid:1)(cid:2)(cid:3)(cid:18)(cid:19)(cid:3)(cid:2)(cid:18)(cid:19)(cid:3)(cid:1)(cid:12)(cid:18)(cid:8)(cid:3)(cid:11)(cid:10)(cid:8)(cid:20)(cid:8)(cid:9)(cid:5)(cid:3)(cid:12)(cid:1)(cid:3)(cid:10)(cid:1)(cid:10)(cid:3)(cid:18)(cid:19)(cid:11)(cid:21)(cid:7)(cid:21)(cid:16)(cid:8)(cid:9)(cid:5)(cid:3)(cid:12)(cid:1)
(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:6)(cid:7)(cid:3)(cid:8)(cid:5)(cid:9)(cid:10)(cid:5)(cid:9)(cid:9)(cid:11)(cid:5)(cid:2)(cid:10)(cid:12)(cid:1)(cid:13)(cid:14)(cid:9)
(cid:15)(cid:14)(cid:16)(cid:1)(cid:17)(cid:8)(cid:5)(cid:9)(cid:10)(cid:5)(cid:7)(cid:9)(cid:7)(cid:16)(cid:3)(cid:5)(cid:2)(cid:16)(cid:5)(cid:7)(cid:9)(cid:11)(cid:1)(cid:6)(cid:3)(cid:10)(cid:3)(cid:18)(cid:1)(cid:5)(cid:7)(cid:19)(cid:9)(cid:9)(cid:5)(cid:16)(cid:12)(cid:2)(cid:12)(cid:20)(cid:3)(cid:18)(cid:1)(cid:5)(cid:7)(cid:9)(cid:5)(cid:8)(cid:9)(cid:10)(cid:5)(cid:9)(cid:21)(cid:5)(cid:7)(cid:8)(cid:3)(cid:12)(cid:2)(cid:9)(cid:10)(cid:5)(cid:9)(cid:11)(cid:5)(cid:2)(cid:10)(cid:12)(cid:1)(cid:13)(cid:14)(cid:9)
(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:4)(cid:6)(cid:7)(cid:8)(cid:9)(cid:10)(cid:8)(cid:9)(cid:11)(cid:12)(cid:2)(cid:13)(cid:2)(cid:6)(cid:14)(cid:9)(cid:15)(cid:5)(cid:12)(cid:5)(cid:16)(cid:17)(cid:3)
(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:6)(cid:7)(cid:8)(cid:9)(cid:6)(cid:10)(cid:11)(cid:12)(cid:13)(cid:12)(cid:7)(cid:13)(cid:14)(cid:7)(cid:5)(cid:11)(cid:15)(cid:7)(cid:11)(cid:5)(cid:12)(cid:14)(cid:13)(cid:16)(cid:12)(cid:13)
(cid:16)(cid:4)(cid:17)(cid:17)(cid:18)(cid:12)(cid:14)(cid:13)(cid:19)(cid:19)(cid:13)
(cid:18)(cid:10)(cid:12)(cid:8)(cid:3)(cid:3)(cid:17)(cid:9)(cid:2)(cid:6)(cid:14)(cid:9)(cid:17)(cid:19)(cid:6)(cid:10)(cid:5)(cid:2)(cid:20)(cid:19)(cid:3)(cid:9)(cid:10)(cid:8)(cid:9)(cid:21)(cid:22)(cid:12)(cid:8)(cid:9)(cid:2)(cid:20)(cid:20)(cid:17)(cid:8)(cid:9)(cid:23)(cid:5)(cid:4)(cid:8)(cid:20)(cid:4)(cid:8)(cid:9)(cid:1)(cid:24)(cid:20)(cid:10)(cid:2)(cid:25)(cid:8)(cid:20)(cid:19)(cid:2)(cid:7)(cid:8)(cid:9)(cid:8)(cid:20)(cid:9)
(cid:26)(cid:20)(cid:27)(cid:24)(cid:12)(cid:25)(cid:2)(cid:19)(cid:5)(cid:28)(cid:6)(cid:8)(cid:9)(cid:18)(cid:29)(cid:29)(cid:7)(cid:5)(cid:28)(cid:6)(cid:17)(cid:8)(cid:9)(cid:30)(cid:9)(cid:7)(cid:2)(cid:9)(cid:31)(cid:8)(cid:3)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)
(cid:9)
(cid:5)(cid:22)(cid:23)(cid:24)(cid:25)(cid:26)(cid:9)(cid:25)(cid:27)(cid:28)(cid:29)(cid:30)(cid:31)(cid:30)(cid:24)(cid:22)(cid:23)(cid:26)(cid:9) (cid:9)
(cid:1)(cid:1) (cid:6)(cid:24)(cid:29)(cid:28)!(cid:9)(cid:3)(cid:20)(cid:5)(cid:10)(cid:9)(cid:15)(cid:5)(cid:6)(cid:5)"(cid:9)(cid:9)#(cid:20)(cid:29)$%&(cid:26)(cid:9)(cid:28)(cid:26)(cid:9)'(cid:31)()(cid:27)&(cid:26)('(cid:26)*(cid:9)(cid:26)((cid:9)(cid:3)()(cid:31)&+(cid:29)%(cid:24)(cid:22)(cid:23)(cid:26),(cid:9)
(cid:1)(cid:1) (cid:6)(cid:24)(cid:29)(cid:28)!(cid:9)(cid:13)(cid:12)(cid:1)(cid:7)(cid:17)(cid:3)(cid:20)(cid:3)(cid:1)(cid:22)(cid:8)(cid:26)'!((cid:31)-(cid:31)(cid:30)(cid:23)(cid:26)(cid:9)(cid:26)((cid:9)(cid:3)()(cid:31)&+(cid:29)%(cid:24)(cid:22)(cid:23)(cid:26),(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:1)
(cid:9)
Année Universitaire : 2008(cid:1)2009
!"(cid:1)(cid:18)#"(cid:9)
e fascicule des travaux dirigés d’algorithmique et structures de données II est à
l’intention des étudiants de la première année en Licence en Informatique Appliquée
à la Gestion de la Faculté des Sciences Juridiques, Économique et de Gestion de
Jendouba. Il aborde brièvement les thèmes les plus classiques et les plus utilisés en informatique :
les enregistrements, les fichiers, la récursivité, les listes chainées, les piles, les files et les arbres
binaires de recherche.
Le fascicule comporte 5 TD avec leurs corrections qui sont réparties comme suit :
TD1 : Les enregistrements et les fichiers
TD2 : La récursivité
TD3 : Les listes chainées
TD4 : Les piles et les files
TD5 : Les arbres binaires de recherche
Une fois que l’étudiant à obtenue une connaissance suffisante sur la manipulation des types
simples, dans ce fascicule nous débuterons par un TD1 qui est consacré pour la manipulation des
types complexes(les enregistrements), et sur les fichiers séquentiels. L’étudiant sera capable à la
fin du TD1 à manipuler les fichiers.
Dans le TD2, nous traiterons les sous(cid:1)programmes récursifs, nous allons voir de plus près le
mécanisme de transformation d’un programme itérative en un programme récursif. L’étudiant
dans ce TD doit savoir exécuter à la main en utilisant une pile.
Après avoir traiter les programmes en version récursifs, le TD3 sera sur l’allocation dynamique
après avoir vu au part avant l’allocation statique. Dans ce TD nous traiterons les listes chaines que
ce soit simple, double ou circulaire. L’étudiant doit apprendre à créer une liste, la parcourir et
enfin savoir comment supprimer un élément.
Le TD4 est une suite du précédent, vu qu’il s’agit d’une liste chainée avec des stratégies d’accès,
pour les piles, ils utilisent la stratégie (Last In First Out) et pour les files (First In First out). Nous
définirons les différents sous(cid:1)programmes qui seront utiles pour manipuler ces derniers.
A la fin nous entamerons le TD5 qui sera consacré pour la manipulation des arbres binaires de
recherche. Nous allons traiter dans celui(cid:1)là les différents algorithmes avancés : la rotation, la
fusion, la vérification d’un arbre s’il est parfait, dégénéré,…
Enfin, nous espérons que le présent ouvrage aura le mérite d’être un bon support pédagogique
pour l’enseignant et un document permettant une concrétisation expérimentale pour l’étudiant.
(cid:9)
(cid:9)
(cid:9)
(cid:23)(cid:8)(cid:3)(cid:9)(cid:2)(cid:6)(cid:19)(cid:8)(cid:6)(cid:12)(cid:3)(cid:9)
!(cid:5)(cid:2)(cid:10)$(cid:9)(cid:26)%"(cid:15)(cid:9)(cid:1)(cid:2)(cid:12)(cid:8)$(cid:9)
!(cid:5)(cid:2)(cid:10)$(cid:9)&'()(cid:23)(cid:26)%(cid:26)(cid:9)
Page 1 sur 53
(cid:1)
(cid:11)(cid:2)*(cid:7)(cid:8)(cid:9)(cid:10)(cid:8)(cid:3)(cid:9)(cid:25)(cid:2)(cid:19)(cid:5)(cid:22)(cid:12)(cid:8)(cid:3)
(cid:11)(cid:15)(cid:9)(cid:20)+(cid:9)(cid:21),(cid:23)(cid:8)(cid:3)(cid:9)(cid:8)(cid:20)(cid:12)(cid:8)(cid:16)(cid:5)(cid:3)(cid:19)(cid:12)(cid:8)(cid:25)(cid:8)(cid:20)(cid:19)(cid:3)(cid:9)(cid:8)(cid:19)(cid:9)(cid:7)(cid:8)(cid:3)(cid:9)(cid:27)(cid:5)(cid:4)$(cid:5)(cid:8)(cid:12)(cid:3)-........................................................................................(cid:9)/
#(cid:24)(cid:12)(cid:12)(cid:8)(cid:4)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:6)(cid:9)(cid:11)(cid:15)(cid:9)(cid:20)+(cid:21)............................................................................................................................(cid:9)0
(cid:11)(cid:15)(cid:9)(cid:20)+(cid:9)1,!(cid:17)(cid:4)(cid:6)(cid:12)(cid:3)(cid:5)(cid:13)(cid:5)(cid:19)(cid:17)-(cid:9)............................................................................................................................(cid:9)(cid:21)1
#(cid:24)(cid:12)(cid:12)(cid:8)(cid:4)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:6)(cid:9)(cid:11)(cid:15)(cid:9)(cid:20)+1..........................................................................................................................(cid:9)(cid:21)2
(cid:11)(cid:15)(cid:9)(cid:20)+(cid:9)/(cid:9),(cid:23)(cid:8)(cid:3)(cid:9)(cid:23)(cid:5)(cid:3)(cid:19)(cid:8)(cid:3)(cid:9)(cid:4)$(cid:2)(cid:5)(cid:20)(cid:17)(cid:8)(cid:3)-..............................................................................................................(cid:9)13
#(cid:24)(cid:12)(cid:12)(cid:8)(cid:4)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:6)(cid:9)(cid:11)(cid:15)(cid:9)(cid:20)+/..........................................................................................................................(cid:9)11
(cid:11)(cid:15)(cid:9)(cid:20)+(cid:9)2,(cid:23)(cid:8)(cid:3)(cid:9)(cid:29)(cid:5)(cid:7)(cid:8)(cid:3)(cid:9)(cid:8)(cid:19)(cid:9)(cid:7)(cid:8)(cid:3)(cid:9)(cid:27)(cid:5)(cid:7)(cid:8)(cid:3)-(cid:9)...............................................................................................................(cid:9)//
#(cid:24)(cid:12)(cid:12)(cid:8)(cid:4)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:6)(cid:9)(cid:11)(cid:15)(cid:9)(cid:20)+2..........................................................................................................................(cid:9)/2
(cid:11)(cid:15)(cid:9)(cid:20)+(cid:9)0,(cid:18)(cid:12)(cid:12)(cid:8)(cid:9)(cid:5)(cid:20)(cid:2)(cid:5)(cid:12)(cid:8)(cid:9)(cid:10)(cid:8)(cid:9)(cid:12)(cid:8)(cid:4)$(cid:8)(cid:12)(cid:4)$(cid:8)-.................................................................................................(cid:9)/4
#(cid:24)(cid:12)(cid:12)(cid:8)(cid:4)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:6)(cid:9)(cid:11)(cid:15)(cid:9)(cid:20)+0..........................................................................................................................(cid:9)23
&(cid:26)&(cid:23)(cid:26)'(cid:31)!(cid:18) 5(cid:26)"(cid:9)....................................................................................................................................(cid:9)0/
(cid:9)
(cid:9)
Page 2 sur 53
(cid:18)(cid:20)(cid:20)(cid:17)(cid:8)(cid:9)((cid:20)(cid:5)(cid:13)(cid:8)(cid:12)(cid:3)(cid:5)(cid:19)(cid:2)(cid:5)(cid:12)(cid:8)(cid:9)<(cid:9)133=>133?(cid:9)@(cid:9))(cid:8)(cid:25)(cid:8)(cid:3)(cid:19)(cid:12)(cid:8)(cid:9)1(cid:9)
%(cid:24)(cid:10)(cid:6)(cid:7)(cid:8)(cid:9)<(cid:9)(cid:18)(cid:7)(cid:16)(cid:24)(cid:12)(cid:5)(cid:19)$(cid:25)(cid:5)(cid:28)(cid:6)(cid:8)(cid:9)(cid:8)(cid:19)(cid:9)(cid:3)(cid:19)(cid:12)(cid:6)(cid:4)(cid:19)(cid:6)(cid:12)(cid:8)(cid:3)(cid:9)(cid:10)(cid:8)(cid:9)(cid:10)(cid:24)(cid:20)(cid:20)(cid:17)(cid:8)(cid:3)(cid:9)(cid:26)(cid:26)
#(cid:7)(cid:2)(cid:3)(cid:3)(cid:8)(cid:9)(cid:9)(cid:9)<(cid:9)(cid:21)(cid:22)(cid:12)(cid:8)(cid:9)(cid:2)(cid:20)(cid:20)(cid:17)(cid:8)(cid:9)(cid:23)(cid:1)(cid:26)(cid:18)(cid:31)
(cid:1)(cid:2)(cid:4)(cid:6)(cid:7)(cid:19)(cid:17)(cid:9)(cid:10)(cid:8)(cid:3)(cid:9))(cid:4)(cid:5)(cid:8)(cid:20)(cid:4)(cid:8)(cid:3)(cid:9):(cid:6)(cid:12)(cid:5)(cid:10)(cid:5)(cid:28)(cid:6)(cid:8)(cid:3);(cid:9)"(cid:4)(cid:24)(cid:20)(cid:24)(cid:25)(cid:5)(cid:28)(cid:6)(cid:8)(cid:3)(cid:9)
(cid:8)(cid:19)(cid:9)(cid:10)(cid:8)(cid:9)(cid:31)(cid:8)(cid:3)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:8)(cid:9):(cid:8)(cid:20)(cid:10)(cid:24)(cid:6)*(cid:2)(cid:9)
#$(cid:2)(cid:12)(cid:16)(cid:17)(cid:9)(cid:10)(cid:8)(cid:9)(cid:4)(cid:24)(cid:6)(cid:12)(cid:3)(cid:9)(cid:9)<(cid:9)!(cid:5)(cid:2)(cid:10)$(cid:9)(cid:26)%"(cid:15)(cid:9)(cid:1)"!"5(cid:9)
#$(cid:2)(cid:12)(cid:16)(cid:17)(cid:9)(cid:10)(cid:8)(cid:9)(cid:11)(cid:15)(cid:9)<(cid:9)!(cid:5)(cid:2)(cid:10)$(cid:9)&'()(cid:23)(cid:26)%(cid:26)(cid:9)(cid:9)(cid:9)
(cid:9)(cid:9)(cid:9)
(cid:11)(cid:15)(cid:9)(cid:20)+(cid:9)(cid:21),(cid:23)(cid:8)(cid:3)(cid:9)(cid:8)(cid:20)(cid:12)(cid:8)(cid:16)(cid:5)(cid:3)(cid:19)(cid:12)(cid:8)(cid:25)(cid:8)(cid:20)(cid:19)(cid:3)(cid:9)(cid:8)(cid:19)(cid:9)(cid:7)(cid:8)(cid:3)(cid:9)(cid:27)(cid:5)(cid:4)$(cid:5)(cid:8)(cid:12)(cid:3)-(cid:9)
,(cid:23)(cid:8)(cid:3)(cid:9)(cid:8)(cid:20)(cid:12)(cid:8)(cid:16)(cid:5)(cid:3)(cid:19)(cid:12)(cid:8)(cid:25)(cid:8)(cid:20)(cid:19)(cid:3)(cid:9)(cid:8)(cid:19)(cid:9)(cid:7)(cid:8)(cid:3)(cid:9)(cid:27)(cid:5)(cid:4)$(cid:5)(cid:8)(cid:12)(cid:3)-(cid:9)
'*6(cid:8)(cid:4)(cid:19)(cid:5)(cid:27)(cid:3)(cid:9)
(cid:1)(cid:1) (cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:6)(cid:7)(cid:8)(cid:9)(cid:10)(cid:11)(cid:12)(cid:9)(cid:9)(cid:8)(cid:11)(cid:13)(cid:8)(cid:14)(cid:8)(cid:3)(cid:13)(cid:10)(cid:15)(cid:8)(cid:16)(cid:10)(cid:17)(cid:2)(cid:9)(cid:4)(cid:2)(cid:18)(cid:7)(cid:8)(cid:16)(cid:10)(cid:15)(cid:8)(cid:10)(cid:13)(cid:19)(cid:5)(cid:8)(cid:10)(cid:8)(cid:3)(cid:9)(cid:8)(cid:20)(cid:4)(cid:16)(cid:13)(cid:9)(cid:8)(cid:14)(cid:8)(cid:3)(cid:13)(cid:21)(cid:10)(cid:10)
(cid:1)(cid:1) (cid:22)(cid:12)(cid:14)(cid:5)(cid:9)(cid:8)(cid:3)(cid:15)(cid:9)(cid:8)(cid:10)(cid:7)(cid:8)(cid:16)(cid:10)(cid:11)(cid:12)(cid:3)(cid:11)(cid:8)(cid:5)(cid:13)(cid:16)(cid:10)(cid:15)(cid:8)(cid:10)(cid:18)(cid:2)(cid:16)(cid:8)(cid:10)(cid:9)(cid:8)(cid:7)(cid:2)(cid:13)(cid:4)(cid:23)(cid:16)(cid:10)(cid:2)(cid:6)(cid:24)(cid:10)(cid:23)(cid:4)(cid:11)(cid:25)(cid:4)(cid:8)(cid:9)(cid:16)(cid:21)(cid:10)
(cid:1)(cid:1) (cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:6)(cid:7)(cid:8)(cid:9)(cid:10)(cid:15)(cid:8)(cid:16)(cid:10)(cid:23)(cid:4)(cid:11)(cid:25)(cid:4)(cid:8)(cid:9)(cid:16)(cid:10)(cid:26)(cid:10)(cid:12)(cid:9)(cid:20)(cid:2)(cid:3)(cid:4)(cid:16)(cid:2)(cid:13)(cid:4)(cid:12)(cid:3)(cid:10)(cid:16)(cid:27)(cid:28)(cid:6)(cid:8)(cid:3)(cid:13)(cid:4)(cid:8)(cid:7)(cid:7)(cid:8)(cid:21)(cid:10)
"7"!#(cid:26)#"(cid:9)8+(cid:21)(cid:9)
Créer un enregistrement nommé « "(cid:19)(cid:6)(cid:10)(cid:5)(cid:2)(cid:20)(cid:19) » qui est caractérisé par un (cid:4)(cid:15)(cid:8)(cid:3)(cid:13)(cid:4)(cid:23)(cid:4)(cid:2)(cid:3)(cid:13), un
(cid:3)(cid:12)(cid:14) et un (cid:5)(cid:9)(cid:27)(cid:3)(cid:12)(cid:14).
On vous demande de saisir 10 étudiants, les ranger dans un tableau puis les afficher.
"7"!#(cid:26)#"(cid:9)8+1(cid:9)
On reprend l’exercice précédent mais on rajoute en plus pour chaque étudiant ses deux
notes. On vous demande de créer le nouvel enregistrement nommé « 8(cid:24)(cid:19)(cid:8)(cid:3) » qui est
caractérisé par NoteCc (Note de contrôle continu) et NoteEx (Note d’examen).
Modifier l’enregistrement « "(cid:19)(cid:6)(cid:10)(cid:5)(cid:2)(cid:20)(cid:19) » afin qu’elle puisse être en relation avec
l’enregistrement « 8(cid:24)(cid:19)(cid:8)(cid:3) ».
On vous demande de créer :
(cid:1)(cid:1) Une procédure de saisi des étudiants ainsi leurs notes.
(cid:1)(cid:1) Une procédure d’affiche des étudiants avec leurs notes.
(cid:1)(cid:1) Une fonction qui renvoie l’étudiant qui a eu la meilleure note d’examen.
(cid:1)(cid:1) Une fonction qui renvoie la moyenne générale de la classe.
Publicité
(cid:10)(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:5)(cid:4) (cid:6) (cid:5)(cid:2)(cid:8)(cid:4)(cid:9)(cid:10) ∗ 0.3 (cid:15) (cid:5)(cid:2)(cid:8)(cid:4)(cid:16)(cid:17) ∗ 0.7(cid:10)
(cid:1)(cid:1) Afficher la meilleure note d’examen et la moyenne générale de la classe.
9crire le programme principal faisant appel aux différents sous(cid:1)programmes.
"7"!#(cid:26)#"(cid:9)8+/(cid:9)
On souhaite mémoriser des noms des personnes dans un fichier nommé «(cid:9)(cid:29)(cid:8)(cid:12)(cid:3).(cid:10)(cid:2)(cid:19)(cid:9)».
On vous demande alors de créer les sous(cid:1)programmes qui suivent :
(cid:1)(cid:1) Une procédure de création du fichier qui contient les noms des personnes.
(cid:1)(cid:1) Une procédure d’affichage des noms de personnes.
(cid:1)(cid:1) Une fonction qui permet de chercher un nom passé en argument et qui renvoie
vrai si ce dernier est existant et faux sinon.
(cid:1)(cid:1) Une procédure qui copie les noms sans compter le nom passé en paramètre.
9crire le programme principal faisant appel aux différents sous(cid:1)programmes.
Page 3 sur 53
"7"!#(cid:26)#"(cid:9)8+2(cid:9)
On souhaite mémoriser les étudiants de la faculté ainsi que leurs notes dans un fichier
nommé « (cid:27)(cid:5)(cid:4)$(cid:8)(cid:19)(cid:6).(cid:10)(cid:2)(cid:19) ». Un étudiant est caractérisé par un (cid:4)(cid:15)(cid:8)(cid:3)(cid:13)(cid:4)(cid:23)(cid:4)(cid:2)(cid:3)(cid:13), un (cid:3)(cid:12)(cid:14) et un
(cid:5)(cid:9)(cid:27)(cid:3)(cid:12)(cid:14). Chaque étudiant aura deux notes : une note de contrôle contenu et une note
d’examen.
(cid:11)(cid:12)(cid:2)(cid:13)(cid:2)(cid:5)(cid:7)(cid:9)(cid:30)(cid:9)(cid:27)(cid:2)(cid:5)(cid:12)(cid:8)(cid:9)<(cid:9)
(cid:21).(cid:9) Créer les enregistrements nécessaires pour élaborer ce programme.
1.(cid:9) 9crire une procédure permettant de saisir les notes associées à un étudiant donné
en paramètre.
/.(cid:9) 9crire une procédure permettant de créer le fichier des étudiants.
2.(cid:9) 9crire une procédure qui permet de copier les étudiants qui ont eu une moyenne
supérieure ou égale à 10 du fichier « (cid:27)(cid:5)(cid:4)$(cid:8)(cid:19)(cid:6).(cid:10)(cid:2)(cid:19) » dans un tableau des étudiants.
0.(cid:9) 9crire une procédure qui permet de trier un tableau d’étudiants dans l’ordre
décroissant selon leurs moyennes.
A.(cid:9) 9crire une procédure qui permet de créer le fichier nommé B(cid:9)(cid:12)(cid:8)(cid:3).(cid:10)(cid:2)(cid:19) » qui
contiendra les étudiants qui sont réussît, trié dans l’ordre décroissant.
4.(cid:9) 9crire une procédure qui permet d’afficher le contenu du fichier « (cid:12)(cid:8)(cid:3).(cid:10)(cid:2)(cid:19) ».
=.(cid:9) 9crire le programme principal qui fait appel aux différents sous(cid:1)programmes.
Page 4 sur 53
(cid:9)
(cid:9)
#(cid:24)(cid:12)(cid:12)(cid:8)(cid:4)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:6)(cid:9)(cid:11)(cid:15)(cid:9)(cid:20)+(cid:21)(cid:9)
(cid:9)
"7"!#(cid:26)#"(cid:9)8+(cid:21)(cid:9)
Algorithme GesEtud
Type
Etudiant : Enregistrement
Ident : Entier
Nom : chaine[30]
Prénom : chaine[20]
Fin Etudiant
TAB : Tableau de 10 Etudiant
Var
ET : TAB
n : Entier
Procédure Remplissage(m : Entier ; var T : TAB)
Var
i : Entier
Début
Pour i de 1 à m faire
Ecrire("Etudiant n°",i," :")
Ecrire("Identifiant : "),Lire(T[i].Ident)
Ecrire("Nom : "),Lire(T[i].Nom)
Ecrire("Prénom : "),Lire(T[i].Prénom)
Fin Pour
Fin
Procédure Affichage(m : Entier ; var T : TAB)
Var
i : Entier
Début
Ecrire("Identifiant
Prénom : ")
Ecrire("*")
Pour i de 1 à n faire
Nom
Ecrire(T[i].Ident," ",Lire(T[i].Nom," ",T[i].Prénom)
Fin Pour
Fin
(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:3)(cid:6)(cid:7)(cid:7)(cid:8)(cid:9)(cid:10)(cid:3)(cid:11)(cid:12)(cid:13)(cid:11)(cid:10)(cid:6)(cid:14)(cid:15)(cid:9)
Début
n (cid:2) 10
Remplissage(n,ET)
Affichage(n,ET)
Fin
Page 5 sur 53
"7"!#(cid:26)#"(cid:9)8+1(cid:9)
Algorithme GesEtud
Type
Notes : Enregistrement
noteCc : Réel
noteEx : Réel
Fin Notes
Etudiant : Enregistrement
Ident : Entier
Nom : chaine[30]
Prénom : chaine[20]
Note : Notes
Fin Etudiant
TAB : Tableau de 10 Etudiant
Var
ET : TAB
n : Entier
Procédure SaisiNotes(var E : Etudiant)
Var
noteEntrer : Réel
Début
Répéter
Ecrire("Note contrôle contenu : "),Lire(noteEntrer)
Jusqu’à noteEntrer ≥ 0 ET noteEntrer ≤ 20
E.Note.NoteCc (cid:2) noteEnter
Répéter
Ecrire("Note examen : "), Lire(noteEntrer)
Jusqu’à noteEntrer ≥ 0 ET noteEntrer ≤ 20
E.Note.NoteEx (cid:2) noteEnter
Fin
Procédure Remplissage(m : Entier ; var T : TAB)
Var
i : Entier
Début
Pour i de 1 à m faire
Publicité
Ecrire("Etudiant n°",i," :")
Ecrire("Identifiant : "),Lire(T[i].Ident)
Ecrire("Nom : "),Lire(T[i].Nom)
Ecrire("Prénom : "),Lire(T[i].Prénom)
SaisiNotes(T[i])
Fin Pour
Fin
Page 6 sur 53
Procédure AfficheNotes(E : Etudiant)
Début
Ecrire("Note Contôle Contenu
Note Examen ")
Ecrire("")
Ecrire(E.Note.NoteCc," ",E.Note.NoteEx)
Fin
Procédure Affichage(m : Entier ; T : TAB)
Var
i : Entier
Début
Ecrire("Identifiant
Prénom : ")
Ecrire("*")
Pour i de 1 à n faire
Nom
Ecrire(T[i].Ident," ",Lire(T[i].Nom," ",T[i].Prénom)
AfficheNotes(T[i])
Fin Pour
Fin
Fonction MeilleureNote(m : Entier ; T : TAB) : Réel
Var
i : Entier
NoteMax : Réel
Début
NoteMax (cid:2) T[1].Note.NoteEx
Pour i de 2 à m Faire
Si T[i].Note.NoteEx > NoteMax Alors
NoteMax (cid:2) T[i].Note.NoteEx
Fin Si
Fin Pour
MeilleureNote (cid:2) NoteMax
Fin
Fonction MoyenneGénérale(m : Entier ; T : TAB) : Réel
Var
i : Entier
som : Réel
Début
som (cid:2) 0
Pour i de 2 à m Faire
som (cid:2) som + 0.3 x T[i].Note.noteCc + 0.7 x T[i].Note.noteEx
Fin Pour
MoyenneGénérale (cid:2) som / m
Fin
(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:3)(cid:6)(cid:7)(cid:7)(cid:8)(cid:9)(cid:10)(cid:3)(cid:11)(cid:12)(cid:13)(cid:11)(cid:10)(cid:6)(cid:14)(cid:15)(cid:9)
Début (cid:9)
n (cid:2) 10
Remplissage(n,ET)
Affichage(n,ET)
Ecrire("Meilleur note examen :", MeilleureNote(n,ET),
" Moyenne générale de la classe :", MoyenneGénérale(n,ET))
Fin
Page 7 sur 53
"7"!#(cid:26)#"(cid:9)8+/(cid:9)
Algorithme TraiTFichNom
Type
Nom : chaine[30]
FichNoms : Fichier de Nom
Var
F1,F2 : FichNoms
Procédure Création(Var fn : FichNoms)
Var
n : Nom
rep : caractère
Début
Ouvrir(fn,E) (cid:16)(cid:16)(cid:4)(cid:17)(cid:18)(cid:8)(cid:3)(cid:19)(cid:17)(cid:3)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)(cid:9)(cid:8)(cid:12)(cid:9)(cid:23)(cid:13)(cid:3)(cid:11)(cid:19)(cid:17)(cid:3)(cid:8)
rep (cid:2) ʹOʹ
Tant que MAJUS(rep) = ʹOʹ Faire
Ecrire(”Nom : ”), Lire(n)
Ecrire(fn,n)
(cid:9)
Ecrire(”Voulez*vous ajouter un autre nom (O/N) : ”)
Lire(rep)
Fin Tant que
Fermer(fn) (cid:16)(cid:16)(cid:21)(cid:8)(cid:3)(cid:7)(cid:8)(cid:19)(cid:17)(cid:3)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)
Fin
Procédure Affichage(fn : FichNoms)
var
n : Nom
Début
Ouvrir(fn,L)
Lire(fn,n)
Tant que NON(FinDeFichier(fn)) Faire
Ecrire(n)
Lire(fn,n)
Fin Tant que
Fermer(fn)
Fin
Fonction Recherche(x : Nom ; fn : FichNoms) : Booléen
var
n : Nom
Trouve : Booléen
Début
Ouvrir(fn,L)
Lire(fn,n)
Trouve (cid:2) (n = x)
Tant que Trouve=faux ET NON(FinDeFichier(fn)) Faire
Lire(fn,n)
Trouve (cid:2) (n = x)
Fin Tant que
Si FinDeFichier(fn) Alors
Recherche (cid:2) faux
Sinon
Recherche (cid:2) vrai
Fin Si
Publicité
Fermer(fn)
Fin
Page 8 sur 53
Procédure Copier(x : Nom ; fn : FichNoms ; var ft : FichNoms)
var
n : Nom
Début
Ouvrir(fn,L)
Ouvrir(ft,E)
(cid:16)(cid:16)(cid:13)(cid:4)(cid:10)(cid:11)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)(cid:9)(cid:24)(cid:4)(cid:17)(cid:3)(cid:13)(cid:8)(cid:9)(cid:18)(cid:8)(cid:3)(cid:24)(cid:9)(cid:14)(cid:8)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)(cid:9)(cid:20)(cid:8)(cid:9)(cid:20)(cid:8)(cid:24)(cid:19)(cid:11)(cid:12)(cid:6)(cid:19)(cid:11)(cid:4)(cid:12)(cid:9)
Lire(fn,n)
Tant que n ≠ x ET NON(FinDeFichier(fn)) Faire
Ecrire(ft,n)
Lire(fn,n)
Fin Tant que
Si NON(FinDeFichier(fn)) Alors
(cid:9)
Lire(fn,n)
(cid:16)(cid:16)(cid:13)(cid:4)(cid:10)(cid:11)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:3)(cid:8)(cid:24)(cid:19)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)(cid:9)
Tant que NON(FinDeFichier(fn)) Faire
Ecrire(ft,n)
Lire(fn,n)
Fin Tant que
Fin Si
Fermer(fn)
Fermer(ft)
Fin
(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:3)(cid:6)(cid:7)(cid:7)(cid:8)(cid:9)(cid:10)(cid:3)(cid:11)(cid:12)(cid:13)(cid:11)(cid:10)(cid:6)(cid:14)(cid:15)(cid:9)
Début (cid:9)
Création(F1)
Affichage(F1)
Si Recherche("Riadh",F1) Alors
Ecrire("Riadh est existant dans le fichier")
Sinon
Ecrire("Riadh est non existant dans le fichier")
Fin Si
Copier("Riadh",F1,F2)
Affichage(F2)
Fin
"7"!#(cid:26)#"(cid:9)8+2(cid:9)
Algorithme GesEtudFichier
Type
Notes : Enregistrement
noteCc : Réel
noteEx : Réel
Fin Notes
Etudiant : Enregistrement
Ident : Entier
Nom : chaine[30]
Prénom : chaine[20]
Note : Notes
Fin Etudiant
TAB : Tableau de 100 Etudiant
FichEtud : Fichier de Etudiant
Page 9 sur 53
Var
Fe,Fr : FichEtud
Procédure SaisiNotes(var E : Etudiant)
Var
noteEntrer : Réel
Début
Répéter
Ecrire("Note contrôle contenu : "),Lire(noteEntrer)
Jusqu’à noteEntrer ≥ 0 ET noteEntrer ≤ 20
E.Note.NoteCc (cid:2) noteEnter
Répéter
Ecrire("Note examen : "), Lire(noteEntrer)
Jusqu’à noteEntrer ≥ 0 ET noteEntrer ≤ 20
E.Note.NoteEx (cid:2) noteEnter
Fin
Procédure Création(var fn : FichEtud )
Var
Et : Etudiant
rep : caractère
Début
Ouvrir(fn,E) (cid:16)(cid:16)(cid:4)(cid:17)(cid:18)(cid:8)(cid:3)(cid:19)(cid:17)(cid:3)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)(cid:9)(cid:8)(cid:12)(cid:9)(cid:23)(cid:13)(cid:3)(cid:11)(cid:19)(cid:17)(cid:3)(cid:8)
rep (cid:2) ʹOʹ
Tant que MAJUS(rep) = ʹOʹ Faire
Ecrire("Identifiant : "),Lire(Et.Ident)
Ecrire("Nom : "),Lire(Et.Nom)
Ecrire("Prénom : "),Lire(Et.Prénom)
SaisiNotes(Et)
Ecrire(fn,Et)
(cid:9)
Ecrire(”Voulez*vous ajouter un autre nom (O/N) : ”)
Lire(rep)
Fin Tant que
Fermer(fn) (cid:16)(cid:16)(cid:21)(cid:8)(cid:3)(cid:7)(cid:8)(cid:19)(cid:17)(cid:3)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)
Fin
Procédure CopierDansTab(fn :FichEtud; var n:Entier ;var T : TAB )
var
Et : Etudiant
Moy : Réel
Début
Ouvrir(fn,L)
Lire(fn,Et)
n (cid:2) 0
Tant que NON(FinDeFichier(fn)) Faire
Moy (cid:2) 0.3 x Et.Note.noteCc + 0.7 x Et.Note.noteEx
Si Moy ≥ 10 Alors
n (cid:2) n + 1 (cid:16)(cid:16)(cid:9)(cid:11)(cid:12)(cid:13)(cid:3)(cid:23)(cid:7)(cid:8)(cid:12)(cid:19)(cid:6)(cid:19)(cid:11)(cid:4)(cid:12)(cid:9)(cid:20)(cid:8)(cid:9)(cid:14)(cid:6)(cid:9)(cid:19)(cid:6)(cid:11)(cid:14)(cid:14)(cid:8)(cid:9)
T[n] (cid:2) Et (cid:16)(cid:16)(cid:9)(cid:6)(cid:21)(cid:21)(cid:8)(cid:13)(cid:19)(cid:6)(cid:19)(cid:11)(cid:4)(cid:12)(cid:9)(cid:20)(cid:8)(cid:9)(cid:14)(cid:25)(cid:8)(cid:12)(cid:3)(cid:8)(cid:5)(cid:11)(cid:24)(cid:19)(cid:3)(cid:8)(cid:7)(cid:8)(cid:12)(cid:19)(cid:9)(cid:6)(cid:17)(cid:9)(cid:19)(cid:6)(cid:26)(cid:14)(cid:8)(cid:6)(cid:17)(cid:9)
(cid:9)
Fin Si
Lire(fn,Et)
Fin Tant que
Fermer(fn)
Fin
Page 10 sur 53
Procédure TriBulle( n : Entier ; var T :TAB)
Var
i : Entier
aux : Etudiant
Publicité
rep : Booléen
moy 1,moy2: Réel
Début
Répéter
rep (cid:2) faux
Pour i de 1 à n Faire
moy1 (cid:2) 0.3 x T[i].Note.noteCc + 0.7 x T[i]
moy2 (cid:2) 0.3 x T[i+1].Note.noteCc + 0.7 x T[i+1]
Si moy1 < moy2 Alors
aux (cid:2) T[i]
T[i] (cid:2) T[i+1]
T[i+1] (cid:2) aux
rep (cid:2) vrai
Fin Si
Fin Pour
n (cid:2) n + 1
Jusqu’à rep = faux OU n =1
Fin
Procédure Résultat(fn :FichEtud; var fr : FichEtud)
Var
i,n : Entier
T : TAB
Début
CopierDansTab(fn,n,T)
TriBulle(n,T) (cid:16)(cid:16)(cid:27)(cid:3)(cid:11)(cid:9)(cid:20)(cid:6)(cid:12)(cid:24)(cid:9)(cid:14)(cid:25)(cid:4)(cid:3)(cid:20)(cid:3)(cid:8)(cid:9)(cid:20)(cid:23)(cid:13)(cid:3)(cid:4)(cid:11)(cid:24)(cid:24)(cid:6)(cid:12)(cid:19)(cid:9)
Ouvrir(fr,E) (cid:16)(cid:16)(cid:9)(cid:28)(cid:17)(cid:18)(cid:8)(cid:3)(cid:19)(cid:17)(cid:3)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)(cid:9)(cid:3)(cid:23)(cid:24)(cid:17)(cid:14)(cid:19)(cid:6)(cid:19)(cid:9)(cid:8)(cid:12)(cid:9)(cid:23)(cid:13)(cid:3)(cid:11)(cid:19)(cid:17)(cid:3)(cid:8)(cid:1)
Pour i de 1 à n Faire
Ecrire(fr,T[i])
Fin Pour
Fermer(fr) (cid:16)(cid:16)(cid:21)(cid:8)(cid:3)(cid:7)(cid:8)(cid:19)(cid:17)(cid:3)(cid:8)(cid:9)(cid:20)(cid:17)(cid:9)(cid:21)(cid:11)(cid:13)(cid:22)(cid:11)(cid:8)(cid:3)
Fin
Procédure Affichage(fr : FichNoms)
var
Et : Etudiant
Moy : Réel
Début
Ouvrir(fr,L)
Lire(fr,Et)
Tant que NON(FinDeFichier(fr)) Faire
Moy (cid:2) 0.3 x Et.Note.noteCc + 0.7 x Et.Note.noteEx
Ecrire(Et.Ident, ″ ″,Et.Nom, ″ ″,Et.Prénom, ″ ″,Moy)
Lire(fr,Et)
Fin Tant que
Fermer(fr)
Fin
(cid:1)(cid:2)(cid:3)(cid:4)(cid:5)(cid:3)(cid:6)(cid:7)(cid:7)(cid:8)(cid:9)(cid:10)(cid:3)(cid:11)(cid:12)(cid:13)(cid:11)(cid:10)(cid:6)(cid:14)(cid:15)(cid:9)
Début (cid:9)
Création(Fn)
Affichage(Fn)
Résultat(Fn,Fr)
Affichage(Fr)
Fin
Page 11 sur 53
(cid:18)(cid:20)(cid:20)(cid:17)(cid:8)(cid:9)((cid:20)(cid:5)(cid:13)(cid:8)(cid:12)(cid:3)(cid:5)(cid:19)(cid:2)(cid:5)(cid:12)(cid:8)(cid:9)<(cid:9)133=>133?(cid:9)@(cid:9))(cid:8)(cid:25)(cid:8)(cid:3)(cid:19)(cid:12)(cid:8)(cid:9)1(cid:9)
%(cid:24)(cid:10)(cid:6)(cid:7)(cid:8)(cid:9)<(cid:9)(cid:18)(cid:7)(cid:16)(cid:24)(cid:12)(cid:5)(cid:19)$(cid:25)(cid:5)(cid:28)(cid:6)(cid:8)(cid:9)(cid:8)(cid:19)(cid:9)(cid:3)(cid:19)(cid:12)(cid:6)(cid:4)(cid:19)(cid:6)(cid:12)(cid:8)(cid:3)(cid:9)(cid:10)(cid:8)(cid:9)(cid:10)(cid:24)(cid:20)(cid:20)(cid:17)(cid:8)(cid:3)(cid:9)(cid:26)(cid:26)
#(cid:7)(cid:2)(cid:3)(cid:3)(cid:8)(cid:9)(cid:9)(cid:9)<(cid:9)(cid:21)(cid:22)(cid:12)(cid:8)(cid:9)(cid:2)(cid:20)(cid:20)(cid:17)(cid:8)(cid:9)(cid:23)(cid:1)(cid:26)(cid:18)(cid:31)
(cid:1)(cid:2)(cid:4)(cid:6)(cid:7)(cid:19)(cid:17)(cid:9)(cid:10)(cid:8)(cid:3)(cid:9))(cid:4)(cid:5)(cid:8)(cid:20)(cid:4)(cid:8)(cid:3)(cid:9):(cid:6)(cid:12)(cid:5)(cid:10)(cid:5)(cid:28)(cid:6)(cid:8)(cid:3);(cid:9)"(cid:4)(cid:24)(cid:20)(cid:24)(cid:25)(cid:5)(cid:28)(cid:6)(cid:8)(cid:3)(cid:9)
(cid:8)(cid:19)(cid:9)(cid:10)(cid:8)(cid:9)(cid:31)(cid:8)(cid:3)(cid:19)(cid:5)(cid:24)(cid:20)(cid:9)(cid:10)(cid:8)(cid:9):(cid:8)(cid:20)(cid:10)(cid:24)(cid:6)*(cid:2)(cid:9)
#$(cid:2)(cid:12)(cid:16)(cid:17)(cid:9)(cid:10)(cid:8)(cid:9)(cid:4)(cid:24)(cid:6)(cid:12)(cid:3)(cid:9)(cid:9)<(cid:9)!(cid:5)(cid:2)(cid:10)$(cid:9)(cid:26)%"(cid:15)(cid:9)(cid:1)"!"5(cid:9)
#$(cid:2)(cid:12)(cid:16)(cid:17)(cid:9)(cid:10)(cid:8)(cid:9)(cid:11)(cid:15)(cid:9)<(cid:9)!(cid:5)(cid:2)(cid:10)$(cid:9)&'()(cid:23)(cid:26)%(cid:26)(cid:9)(cid:9)(cid:9)
(cid:11)(cid:15)(cid:9)(cid:20)+(cid:9)1,!(cid:17)(cid:4)(cid:6)(cid:12)(cid:3)(cid:5)(cid:13)(cid:5)(cid:19)(cid:17)-(cid:9)
,!(cid:17)(cid:4)(cid:6)(cid:12)(cid:3)(cid:5)(cid:13)(cid:5)(cid:19)(cid:17)-(cid:9)
'*6(cid:8)(cid:4)(cid:19)(cid:5)(cid:27)(cid:3)(cid:9)
(cid:1)(cid:1) (cid:29)(cid:27)(cid:16)(cid:12)(cid:6)(cid:15)(cid:9)(cid:8)(cid:10)(cid:15)(cid:8)(cid:16)(cid:10)(cid:5)(cid:9)(cid:12)(cid:20)(cid:9)(cid:2)(cid:14)(cid:14)(cid:8)(cid:16)(cid:10)(cid:9)(cid:27)(cid:11)(cid:6)(cid:9)(cid:16)(cid:4)(cid:23)(cid:16)(cid:21)(cid:10)
(cid:1)(cid:1) (cid:22)(cid:12)(cid:14)(cid:5)(cid:9)(cid:8)(cid:3)(cid:15)(cid:9)(cid:8)(cid:10) (cid:7)(cid:2)(cid:10) (cid:15)(cid:27)(cid:14)(cid:2)(cid:9)(cid:11)(cid:25)(cid:8)(cid:10) (cid:15)(cid:8)(cid:10) (cid:13)(cid:9)(cid:2)(cid:3)(cid:16)(cid:23)(cid:12)(cid:9)(cid:14)(cid:2)(cid:13)(cid:4)(cid:12)(cid:3)(cid:10) (cid:15)(cid:30)(cid:6)(cid:3)(cid:10) (cid:5)(cid:9)(cid:12)(cid:20)(cid:9)(cid:2)(cid:14)(cid:14)(cid:8)(cid:10) (cid:4)(cid:13)(cid:27)(cid:9)(cid:2)(cid:13)(cid:4)(cid:17)(cid:8)(cid:10) (cid:8)(cid:3)(cid:10) (cid:6)(cid:3)(cid:10) (cid:5)(cid:9)(cid:12)(cid:20)(cid:9)(cid:2)(cid:14)(cid:14)(cid:8)(cid:10)
(cid:9)(cid:27)(cid:11)(cid:6)(cid:9)(cid:16)(cid:4)(cid:17)(cid:8)(cid:21)(cid:10)
(cid:1)(cid:1) (cid:31)(cid:2)(cid:17)(cid:12)(cid:4)(cid:9)(cid:10)(cid:7)(cid:8)(cid:16)(cid:10)(cid:2)(cid:17)(cid:2)(cid:3)(cid:13)(cid:2)(cid:20)(cid:8)(cid:16)(cid:10)(cid:15)(cid:8)(cid:10)(cid:7)(cid:30)(cid:6)(cid:13)(cid:4)(cid:7)(cid:4)(cid:16)(cid:2)(cid:13)(cid:4)(cid:12)(cid:3)(cid:10)(cid:15)(cid:8)(cid:10)(cid:7)(cid:2)(cid:10)(cid:9)(cid:27)(cid:11)(cid:6)(cid:9)(cid:16)(cid:4)(cid:17)(cid:4)(cid:13)(cid:27)(cid:10)(cid:5)(cid:12)(cid:6)(cid:9)(cid:10)(cid:9)(cid:27)(cid:16)(cid:12)(cid:6)(cid:15)(cid:9)(cid:8)(cid:10)(cid:7)(cid:8)(cid:16)(cid:10)(cid:5)(cid:9)(cid:12)(cid:18)(cid:7) (cid:14)(cid:8)(cid:16)(cid:21)(cid:10)
"7"!#(cid:26)#"(cid:9)8+(cid:21)(cid:9)
9crire une fonction récursive qui retourné la somme des chiffres d’un entier N donné.
(cid:29)(cid:30)(cid:8)(cid:7)(cid:10)(cid:14)(cid:8)(cid:9)(cid:31)( 123 == > 1 + 2 + 3 = 6 )
"7"!#(cid:26)#"(cid:9)8+1(cid:9)
9crire une fonction récursive qui calcul la factorielle d’un entier N positif.
(cid:29)(cid:30)(cid:8)(cid:7)(cid:10)(cid:14)(cid:8)(cid:9)(cid:31)(cid:9)( 5 ! = 5 x 4 x 3 x 2 x 1 = 120)
"7"!#(cid:26)#"(cid:9)8+/(cid:9)
9crire une fonction récursive qui permet de déterminer si un entier N saisi au clavier est
premier ou pas. (Un nombre premier n’est divisible que par 1 ou lui(cid:1)même).
"7"!#(cid:26)#"(cid:9)8+2(cid:9)
9crire une procédure récursive qui permet d’inverser une chaine de caractères sans utiliser
une chaine temporaire.
(cid:29)(cid:30)(cid:8)(cid:7)(cid:10)(cid:14)(cid:8)(cid:9)(cid:31)(cid:9)information (cid:3) noitamrofni
"7"!#(cid:26)#"(cid:9)8+0(cid:9)
9crire une fonction récursive qui permet de vérifier si deux chaines s1 et s2 sont
anagrammes ou non.
s1 et s2 sont anagrammes s’ils se composent de même lettre.
(cid:29)(cid:30)(cid:8)(cid:7)(cid:10)(cid:14)(cid:8)(cid:9)(cid:31) s1 = "chien" ; s2 = "niche"(cid:3) vrai
"7"!#(cid:26)#"(cid:9)8+A(cid:9)
9crire une fonction récursive qui permet de vérifier si un mot planché en paramètre est
palindrome ou non.
(cid:29)(cid:30)(cid:8)(cid:7)(cid:10)(cid:14)(cid:8)(cid:24)(cid:9)(cid:31) mot = "aziza" (cid:3) vrai ;
mot = "alga" (cid:3) faux
(cid:9)
Page 12 sur 53
"7"!#(cid:26)#"(cid:9)8+4(cid:9)
(cid:1)(cid:1) 9crire une fonction récursive nommée !(cid:8)(cid:4)$C(cid:3)(cid:8)(cid:28) qui permet de chercher un entier
x dans un tableau T de n entiers selon le principe de la recherche séquentielle.
(cid:1)(cid:1) 9crire une fonction récursive nommée !(cid:8)(cid:4)$C(cid:10)(cid:5)(cid:4)(cid:24) qui permet de chercher un entier
x dans un tableau T de n entiers selon le principe de la recherche dichotomique.
"7"!#(cid:26)#"(cid:9)8+=(cid:9)
9crire une procédure récursive indirecte nommé (cid:11)(cid:12)(cid:5)C&(cid:6)(cid:7)(cid:7)(cid:8)(cid:9)qui permet de trier un tableau
T de n entiers. Utiliser les deux procédures ci(cid:1)dessous :
(cid:1)(cid:1) (cid:12)(cid:24)(cid:4)(cid:17)(cid:10)(cid:6)(cid:12)(cid:8)(cid:9) (cid:8)(cid:12)(cid:25)(cid:6)(cid:19)(cid:8)(cid:12),(cid:13)(cid:2)(cid:12)(cid:9)(cid:14);(cid:9)D(cid:9)<(cid:9)"(cid:20)(cid:19)(cid:5)(cid:8)(cid:12)-(cid:9)
(cid:1)(cid:1) (cid:12)(cid:24)(cid:4)(cid:17)(cid:10)(cid:6)(cid:12)(cid:8)(cid:9) (cid:2)(cid:12)(cid:4)(cid:24)(cid:6)(cid:12)(cid:3)(cid:9),(cid:5);(cid:20)(cid:9)<"(cid:20)(cid:19)(cid:5)(cid:8)(cid:12)(cid:9)E(cid:9)(cid:13)(cid:2)(cid:12)(cid:9)(cid:12)(cid:8)(cid:29)(cid:9)<(cid:9)&(cid:24)(cid:24)(cid:7)(cid:17)(cid:8)(cid:20)(cid:9)E(cid:9)(cid:13)(cid:2)(cid:12)(cid:9)(cid:11)(cid:9)<(cid:11)(cid:18)&-(cid:9)
8& : (cid:12)(cid:8)(cid:29)(cid:9) elle est utilisée pour renvoyé s’il y’a eu une permutation au cours du parcours du
tableau.
"7"!#(cid:26)#"(cid:9)8+?(cid:9)
9crire une procédure récursive nommée Anagramme qui permet d’afficher tous les
anagramme d’une chaine ch.
NB : Utiliser une permutation circulaire pour résoudre ce problème.
(cid:29)(cid:30)(cid:8)(cid:7)(cid:10)(cid:14)(cid:8)(cid:9)(cid:31)ch="iag"
Les anagrammes de « iag » sont :
1)(cid:1) aig
2)(cid:1) agi
3)(cid:1...