Travaux Dirigés d’Algorithmique et Structures de Données II

Page 1 sur 54Lecteur de document UniversityLib

Travaux Dirigés d’Algorithmique et Structures de Données II

Informatique Appliquée à la Gestion · notes

Voir tous les documents en gestion et économie

(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...