Vous êtes sur la page 1sur 28

Algorithme Et Structure de Données – Série des TDs Pour La Préparation du BTS

TD1 : Liste des Enoncé Pour Algorithme de Base :

 Exercice 1 : Ecrire un algorithme permettant  de saisir 5 réelles au clavier, les stocker dans un tableau, calculer leur
somme et les afficher avec leur somme à l’écran ;
 Exercice 2 : Ecrire un algorithme permettant de saisir et d’afficher N éléments d’un tableau ;
 Exercice 3 : Ecrire un algorithme permettant de calculer la somme, produit et moyenne des éléments d’un tableau ;
 Exercice 4 : Ecrire un algorithme permettant de chercher la première occurrence d’un élément dans un tableau ;
 Exercice 5 : Ecrire un algorithme permettant de chercher la dernière occurrence d’un élément dans un tableau ;
 Exercice 6 : Ecrire un algorithme permettant de calculer le nombre de fois pour lesquelles un élément apparait dans un
tableau ;
 Exercice 7 : Ecrire un algorithme qui déterminé la valeur du plus grand d'élément d'un tableau ainsi que son indice ;
 Exercice 8 : Ecrire un programme qui saisit un entier et qui l'affiche à l'envers. Par exemple, l'utilisateur saisit 123456
et le programme affiche 654321. Pour cela il faudra utiliser la division et le modulo ;
 Exercice 9 : Ecrire un algorithme qui demande un nombre de départ, et qui calcule la somme des entiers jusqu’à ce
nombre. Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15. NB : on souhaite afficher
uniquement le résultat, pas la décomposition du calcul ;
 Exercice 10 : Ecrire un programme qui demande à l’utilisateur un nombre N et Affiche la liste des diviseurs de ce
nombre ; Affiche Le nombre de ces diviseurs ; et Affiche la somme des diviseurs de ce nombre ;
 Exercice 11 : Ecrire un programme qui demande à l’utilisateur un nombre N puis vérifie si ce nombre est premier ou
non. Le Programme devra retourner un message à l’utilisateur lui disant si le nombre entré est premier ou non ;
 Exercice 12 : Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les dix nombres suivants.
Par exemple, si l'utilisateur entre le nombre 17, le programme affichera les nombres de 18 à 27 ;

TD2 : On souhaite automatiser la gestion des produits dans un super marché où un produit est caractérisé par sa référence, sa
désignation, sa quantité en stock, son seuil de sécurité et la date du dernier approvisionnement. Les informations sur
l’ensemble des produits sont enregistrées sur un tableau de taille 10000. Travail A Faire :

1) Définir la structure de données permettant d’enregistrer les informations sur l’ensemble des produits ;

2) On suppose qu’il y a un certain nombre de produit N déjà enregistrés dans le tableau. Ecrire un algorithme qui permet
de lire les informations sur un nouveau produit et l’enregistre dans le tableau des produits ;

3) Le nombre N de produits déjà enregistré dans le tableau étant toujours connu, écrire un algorithme qui permet
d’afficher la liste des produits devant faire l’objet d’une nouvelle commande. Un produit doit faire l’objet d’une
nouvelle commande si sa quantité en stock est inférieur à sa quantité seuil ;

4) Ecrire un algorithme qui permet d’afficher la liste des produits qui ont été approvisionnée à une date qui sera lue au
clavier ;

5) Ecrire un algorithme qui permet de trier le tableau des produits suivant la désignation du produit ;

1/1
TD3 : On souhaite enregistrer les informations sur toutes les chaises à l’Institut SIANTOU Supérieur. Une chaise est donnée
par son numéro, son emplacement, son type et sa hauteur. On suppose que dans cet institut on ne peut y avoir plus de 5000
chaises. Travail A Faire :

1) Définir la structure de données qui permet d’enregistrer les informations sur les chaises à l’Institut SIANTOU
Supérieur ;

2) Ecrire un algorithme qui permet d’enregistrer une chaise supplémentaire (on notera par Nbre, le nombre de chaise
déjà enregistré dans le tableau) ;

3) Ecrire un algorithme qui permet d’enregistrer 250chaises dans le tableau des chaises (on notera par Nbre, le nombre
de chaise déjà enregistré dans le tableau) ;

4) Ecrire un algorithme qui affiche les emplacements et le nombre de chaise dont la hauteur est supérieur à 20cm ;

5) Ecrire un algorithme qui affiche la hauteur de la plus grande chaise présente dans le tableau ;

6) En supposant que la hauteur de la plus grande chaise est connue, écrire un algorithme qui affiche l’emplacement et le
numéro de la chaise correspondant à cette hauteur ;

7) Ecrire un algorithme qui calcule le nombre de chaise dont la hauteur est comprise entre 10 et 25cm ;

8) Ecrire un algorithme qui affiche et compte le nombre de chaise dont le type est du type rembourré ;

TD4 : On dédire automatiser la gestion d’une bibliothèque et pour cela, un ouvrage est donné par son numéro, son titre, son
auteur et l’année d’édition. On suppose qu’on ne peut pas avoir plus de 500 ouvrages dans cette bibliothèque. Travail A
Faire :

1) Définir la structure de donnée permettant d’accueillir les informations sur l’ensemble des ouvrages ;

2) Ecrire un algorithme qui étant donné le nombre des ouvrages déjà enregistré dans le tableau, enregistre un nouvel
ouvrage ;

3) Ecrire un algorithme qui calcule et affiche le nombre d’ouvrages écris par un auteur donné ;

4) Ecrire un algorithme qui trie le tableau des ouvrages suivant le titre ;

TD5 : On veut écrire les algorithmes pour la gestion des salariés dans une entreprise (1 500 Employés). Pour chaque employé
les informations à gérer sont : son matricule, son nom, sa fonction, sa date d’embauche, son nombre d’enfant et son salaire de
base. Travail A Faire :

1) Définir un type abstrait de données permettant de représenter les informations sur l’ensemble des employés de cette
entreprise ;

2) Ecrire un algorithme qui permet de lire dans un tableau les informations sur l’ensemble des employés ;

3) Ecrire un algorithme qui le matricule d’un employé et retourne la position occupée par cet employé dans le tableau ;

4) Ecrire un algorithme qui retourne le matricule de l’employé ayant le plus grand nombre d’enfant ;

5) Ecrire un algorithme qui trie le tableau des employés suivant le nombre d’enfant ;

2/1
6) Ecrire un algorithme qui calcule la masse salariale de base de l’entreprise ;

TD6 : Soient les informations suivantes concernant un individu : son nom, son année de naissance, sa nationalité, son sexe (F
pour Féminin, M pour Masculin). Les individus sont stockés dans un tableau de taille 20 maximum

1) Définir les structures de données nécessaires à la résolution dudit problème ;

2) Ecrire un sous – programme qui permet d’enregistrer dans le tableau, les informations sur un individu en prenant soin
de mettre le nombre d’éléments enregistrés dans le tableau à jour ;

3) Ecrire un sous – programme qui permet d’enregistrer dans le tableau, les informations sur N individu en évitant les
doublons ;

4) Ecrire un sous – programme qui retourne l’âge d’un individu donné en l’an 2035 ;

TD7 : On dédire automatiser la gestion d’une bibliothèque et pour cela, un ouvrage est donné par son numéro, son titre, son
auteur et l’année d’édition. On suppose qu’on ne peut pas avoir plus de 500 ouvrages dans cette bibliothèque. Travail A
Faire :

1) Définir la structure de donnée permettant d’accueillir les informations sur l’ensemble des ouvrages ;

2) Ecrire une procédure qui prends en entrée le tableau des ouvrages et le nombre des ouvrages déjà enregistré dans le
tableau, enregistre un nouvel ouvrage ;

3) Ecrire une fonction qui calcule le nombre d’ouvrages écris par un auteur donné ;

4) Ecrire une procédure qui trie le tableau des ouvrages suivant le titre ;

TD8 : On désire écrire un programme pour la gestion des électeurs dans une circonscription électorale. Un électeur est
caractérisé par sa CNI, son nom, sa date de naissance, sa profession et son numéro du bureau de vote. Travail A Faire :

1) Définir la structure de données permettant de représenter les électeurs (tableau de taille 10000) ;

2) Ecrire une procédure pour inscrire autant d’électeurs que souhaite l’utilisateur ;

3) Ecrire une procédure qui trie les électeurs par ordre alphabétique ;

4) Ecrire une fonction qui calcule le nombre d’électeurs dans un bureau de vote donné ;

TD9 : On désire automatiser la gestion de stock des consommables d’une entreprise ATCHANG. Un produit est caractérisé
par la référence du produit, la désignation, la quantité en stock, la quantité seuil, la date du dernier approvisionnement et le
matricule du fournisseur. Une commande est caractérisée par le numéro de la commande, la quantité commandée et la date de
la commande (on admet ici que dans une commande ne figure qu’un et un seul produit). Un fournisseur est caractérisé par son
matricule, son nom et son numéro de téléphone. Les produits, les commandes et les fournisseurs sont enregistrés
respectivement dans des vecteurs de taille 1000, 2500 et 200 éléments. Travail A Faire :

1) Définir toutes les structures de données devant servir à la résolution de ce problème ;

3/1
2) Écrire une procédure permettant d’enregistrer un produit. La procédure prend en paramètre le nombre de produit déjà
enregistré (on suppose qu’il est strictement inférieur à la capacité maximale du vecteur) et le vecteur de produits ;

3) Écrire une procédure qui appelle celle écrite en 2. Et qui enregistre 1000 produits ;

4) Écrire une fonction qui étant donné le vecteur des commandes calcule et retourne la fréquence de commande d’un
produit dont la référence est donnée en paramètre. ;

5) Écrire une fonction permet de savoir si un produit est en quantité suffisante en stock. La fonction prend en paramètre
le vecteur de produit et la référence du produit. ;

6) Écrire une procédure qui affiche la liste des produits livrés à une date précise. (Après avoir identifié les différents
paramètres de la procédure, le candidat écrira la procédure) ;

7) Écrire une procédure donnera la liste triée des fournisseurs ayant fournis un produit. La procédure prendra en entrée le
vecteur des produits et le vecteur des fournisseurs ;

TD10 : La Bibliothèque de l’Institut Supérieur MIMAWIL contient des Livres Et Chaque Livre est identifier par : sa
Référence Ref_Livre (0 à 9999), son Titre Lib_Livre (32 Caractères Maximum), son Editeur Edit_Livre (20 Caractères
Maximum), son Année de Publication AnnPub_Livre (Entier), le Volume Vol_Livre (Entier). L’ensemble des livres est stocké
dans un Tableau TabLivre de taille 1000. Travail A Faire :

1) Définir des types de données abstraites appropriées pour l’enregistrement de ces Livres ;

2) Ecrire une procédure Recherche () qui recherche le Livre de référence Ref dans le tableau des Livres et qui affiche
toutes les informations concernant ce Livre ;

3) Ecrire une procédure Insert () qui insert les informations d’un nouveau Livre dans le tableau des Livres. On notera par
N, le nombre de livre déjà dans le tableau ;

4) Ecrire une procédure Affichage () qui affiche la liste des Livres publiés en 2020 ;

5) Ecrire une procédure Tri () qui tri le tableau sur le critère Référence ;

TD11 : On désire écrire un programme pour gérer la location des véhicules. Une location est caractérisée par le numéro de la
location, les noms, prénoms et téléphone du client, l’immatriculation, la marque et le type du véhicule, la date de location et la
durée de la location. La date de location est un enregistrement constitué du Jour, du Mois, et de l’Année qui sont tous des
entiers. Les locations sont rangées dans une vecteur pouvant contenir au plus 100 locations. Travail A Faire :

1) Définir une structure de données pour représenter une location ;

2) Ecrire une procédure pour créer et enregistrer une location dans le vecteur. La procédure prend en paramètre TabLoc
le vecteur des locations et NBLoc le nombre de locations déjà créées ;

3) Ecrire une procédure qui affiche la liste des locations par ordre alphabétique des noms des clients.

4/1
TD12 : Considérons le problème suivant. On désire automatiser l’affectation hebdomadaire des salles du collège IPES. Une
salle est caractérisée par un code, un libellé, un type et une capacité. Un cours est caractérisé par un code, un libellé, le nom de
l’enseignant qui donne le cours et la période à laquelle se déroule le cours. La période est un enregistrement constitué du Jour
et de l’heure. Les cours et les salles sont stockés dans des vecteurs de taille respective 50 et 30. Travail A Faire :

1) Effectuer toutes les déclarations nécessaires à la gestion des affectations hebdomadaires des salles dans ce collège
(7pts) ;

2) Ecrire une procédure qui permet d’enregistrer l’ensemble des cours dans le vecteur ;

3) Ecrire une procédure qui permet d’afficher tous les cours ayant lieu le « Lundi » ;

4) Ecrire une fonction qui retourne la salle qui a la plus grande capacité ;

TD13 : Les informations concernant un hôtel sont Le code, Le nom, La ville, L'adresse (qui est un enregistrement composé de
La boîte postale et Le numéro de téléphone) et La disponibilité du dudit hôtel qui sera un booléen. . Les informations seront
stockées dans un vecteurs de taille 500 et dans un fichier séquentiel. Travail A Faire :

1) Donner la structure de données permettant de représenter ce système ;

2) Ecrire un sous-programme qui permet de créer un fichier d'hôtel avec autant d’éléments que souhaitera l’utilisateur.
La saisie s’arrêtera que lorsque le code sera vide ;

3) Ecrire un sous-programme qui affiche la liste des hôtels disponibles ;

4) Ecrire un sous-programme qui prend en paramètre le fichier hôtel et renvoie la taille de ce fichier ;

5) On voudrait trier le fichier des hôtels :

a. Ecrire une procédure qui permet de transférer les éléments du fichier dans le vecteur hôtel ;

b. Ecrire une procédure qui prend en paramètre le vecteur hôtel et qui le tri dans l’ordre croissant du nom de
l’hôtel ;

c. Ecrire une procédure qui permet de transférer les éléments du tableau trié dans le fichier ;

6) Ecrire un sous-programme qui prend en paramètre le fichier d'hôtel et le nom d'un hôtel puis retourne vraie si cet hôtel
existe dans le fichier et faux sinon.

TD14 : On désire automatiser la gestion d’un parc de vacance. Pour cela, une zone du parc est caractérisée par le numéro de la
zone et son libellé. Un bungalow est donné par son numéro, son libellé et le code de sa catégorie. Une catégorie est donnée par
son code, sa description, sa capacité et son prix par nuit. Une réservation est caractérisée par son numéro, le code du client
ayant effectué la réservation, le numéro du bungalow sollicité, le nombre de nuits à passer, le nombre de suppléments sollicité
et la liste des suppléments choisis. Un supplément étant caractérisé par son code, sa description et son prix par nuit.

1) Quelle est la structure de données qui vous semble idéale pour la résolution de ce problème (vecteur, fichier) ;

Pour la suite, Les zones et les suppléments sont stockés dans des tableaux de tailles respectives 1000 et 100. Les
bungalows, les catégories et les réservations sont stockés dans des fichiers séquentiels.

5/1
2) Définir les structures de données nécessaires à la résolution de ce problème d’après la description faite ci-dessus ;

3) Ecrire une procédure qui étant donné une réservation, l’enregistre dans le fichier des réservations en évitant les
doublons ;

4) Ecrire une fonction qui étant donné une réservation retourne le montant total dû aux suppléments ;

5) Ecrire une fonction qui étant donné le code d’une réservation retourne le montant à payer pour cette réservation ;

6) Ecrire une procédure qui transfère le fichier des catégories dans un tableau de catégories que le candidat aura pris le
soin de définir ;

TD15 : On désire automatiser la gestion des expéditions de colis à l’agence ISTAG Travel Agency. Les informations sur un
client sont données par son numéro d’enregistrement, son nom, son prénom et son type (Client Compte ou Client à tout
venant). Une expédition est caractérisée par un numéro, l’agence de destination, le nom et le numéro du destinataire, la date
d’expédition, les frais et le numéro du client (expéditeur). Dans le cadre de cet exercice, on supposera qu’on ne peut pas faire
plus de 10000 enregistrements tant pour les clients que pour les colis.

1) Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou Liste chaînée). Justifier votre réponse ;

On suppose les informations sur une expédition rangées dans un vecteur et les informations sur les clients dans un
fichier séquentiel.

2) Définir des structures de données permettant de résoudre le problème posé ;

3) Ecrire une procédure qui prend en entrée le nombre d’expédition déjà enregistrées et enregistre une nouvelle
expédition ;

4) Ecrire une procédure qui appelle la précédente et qui permet d’enregistrer 450 expéditions ;

5) Ecrire une procédure qui prend en entrée le nombre d’enregistrement du vecteur et qui transfert les informations
contenues dans le vecteur dans un fichier que vous que vous aurez pris le soin de définir ;

6) On veut établir la facture mensuelle (mois de Mai 2008) d’un client, Ecrire une fonction qui prend le numéro du client
et le vecteur d’expédition et qui retourne le montant total à prélevé dans le compte dudit client ;

7) Ecrire une procédure qui affiche la liste des clients de type « Client Compte » ;

TD16 : Dans l’optique d’atteindre de manière efficace les principaux objectifs concernant la gestion des concours, il vous est
demandé de développer les sous-programmes suivants en tenant compte du fait qu’un candidat est caractérisé par son Nom,
son Code, et la Désignation du concours qu’il sollicite. On suppose que les informations des candidats sont stockées dans un
Fichier. Travail à Faire :

1) Donner un avantage et un inconvénient des tableaux par rapport aux listes chainées ;

2) Déclarer les structures de données nécessaires ;

3) Elaborer les sous-Programmes suivants :

6/1
a. L’algorithme d’une procédure de création du fichier des candidats ;

b. L’algorithme d’une fonction de recherche séquentielle booléenne d’un candidat donné (dont le code est
donné en paramètres) ;

c. L’algorithme d’une procédure d’impression de la liste des candidats ;

On désire à présent pouvoir supprimer un candidat du fichier. On se propose de ce fait d’utiliser une liste chainée des
candidats :

4) Proposer une structure de liste chainée des candidats ;

5) Ecrire l’algorithme d’une procédure de transfert du fichier des candidats dans la liste chainée des candidats. On
effectuera les insertions en tête de liste ;

6) Ecrire l’algorithme d’une procédure de transfert de la liste chainée de candidats dans le fichier des candidats. Le
candidat à supprimer (dont le code est passé en paramètre de la procédure) ne doit pas être transféré dans le fichier.

TD17 : On désire écrire un programme pour la gestion des locations de véhicules. Un Véhicule appartient à une Agence et est
caractérisée par son Numéro de Châssis, sa Marque, son Modèle et son Type. Une Agence possède un Code et est située dans
une Ville. Un Client a un Numéro, un Nom, un Prénom, une Date de Naissance et une Profession. Les Clients signent des
Contrats de Location et chaque Contrat a une durée et est signé à une Date précise. Le Prix de la Location d’un Véhicule est
fixé de façon journalière. On suppose que les informations sur les Contrats, les Véhicules, les Agences et les Clients sont
rangés dans des vecteurs de taille respectives 5000, 100, 10, 500. Travail A Faire :

1. Définir les Structures de données permettant de résoudre le problème posé (5 pts) ;

2. Ecrire un Sous - Programme qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats puis
enregistre un nouvel contrat. Les informations sur le contrat seront lues au clavier et le nombre de contrat enregistré
sera mis à jour (5 pts) ;

3. A un moment donné, le caissier a devant lui 20 clients désirant chacun signer un contrat. Ecrire un Sous - Programme
qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats et qui appelle le Sous - Programme
précédent pour enregistrer les contrats des 20 clients placés devant le caissier (5 pts) ;

4. Ecrire un Sous - Programme qui enregistre dans le vecteur des Véhicules autant de véhicule que veut l’utilisateur
sachant qu’on doit éviter les doublons. Les informations sur les véhicules seront clues au clavier. L’utilisateur sera
appelé à répondre à la question « Continuer ? O / N » (5 pts) ;

5. Ecrire un Sous - Programme qui trie le vecteur des clients par ordre alphabétique (5 pts).

TD18 : On désire automatiser la gestion des carrières des agents communaux dans une communauté urbaine de Yaoundé. Pour
cela un agent communal est donné par son matricule, son nom, non prénom, sa catégorie, son échelon, la date du dernier
avancement et la note obtenue à cette date. Les avancements ont lieu automatiquement à l’échelon supérieur tous les quatre
ans. Mais si deux ans après le dernier avancement, l’agent se voit attribuer une bonne note (supérieure ou égale à 14 / 20) alors
il est également avancé à l’échelon supérieur. Naturellement si un agent a atteint le dernier échelon de la dernière catégorie, il y

7/1
reste. On distingue 4 catégorie (1, 2, 3, 4) et 2 échelons (1, 2) par catégorie. Les agents communaux sont stockés dans un
fichier à accès séquentiel. Travail A Faire :

1) Définir une structure de données pour accueillir les informations sur l’ensemble des agents communaux. (3Pts)

2) Ecrire une procédure qui retourne dans une variable les informations sur un agent communal. (2Pts)

3) Ecrire une procédure qui permet d’enregistrer un nouvel agent dans le fichier des agents sachant qu’on doit éviter les
doublons. On appellera la procédure précédente. (3Pts)

4) Ecrire une fonction qui étant donné la date courante et la note obtenue à cette date par l’agent, retourne vrai si l’agent
peut être avancé, faux sinon. On se limitera aux années au niveau de la comparaison des dates. (4Pts)

5) Ecrire une procédure qui étant donné le matricule d’un agent, la date courante et la note obtenue à cette date retourne
la nouvelle catégorie et le nouvel échelon de l’agent. On pourra appeler la fonction précédente. (4Pts)

6) Ecrire une procédure qui transfert le contenu du fichier dans un tableau que vous aurez pris le soin de définir. (3Pts)

7) Ecrire une procédure qui étant donné la nouvelle catégorie, le nouvel échelon d’un agent et son matricule, modifie ces
informations dans le vecteur des agents. (4Pts)

8) Ecrire une procédure qui transfert le contenu du tableau dans un nouveau fichier. (2Pts)

Problème 3 : (25Pts)

On désire automatiser la gestion des achats de cartouche d’encre à la société TENER EXPRESS. Chaque cartouche
est référencé, possède une désignation et un prix de vente. Un client est caractérisé par un numéro identifiant, son nom, son
adresse complète et son numéro de téléphone. Un contrat est numéroté, daté et possède une durée de validité. Un contrat
précise, pour chaque cartouche intéressant le client, le prix de vente négocié (inférieur au prix tarif) qui sera appliqué au client,
dès lors que la quantité commandée est supérieure ou égale à la quantité minimale négociée. Une commande est caractérisée
par son numéro et une liste d’informations relative à ladite commande. Une information est caractérisée par un numéro de
contrat ainsi que la quantité commandée. La liste des informations est un vecteur. Dans le cadre de ce problème, on supposera
qu’on ne peut pas faire plus de 10000 enregistrements tant pour les cartouches, les clients, les contrats, les informations et les
commandes. Travail A Faire :

1) Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou Liste Chainée). Justifier votre réponse. (3Pts)

On suppose que les informations sur les contrats, les cartouches et les commandes sont rangées dans un vecteur.
Celles sur les clients dans un fichier séquentiel.

2) Définir des structures de données permettant de résoudre le problème posé. (4Pts)

3) Ecrire une procédure qui prend en entrée le nombre de contrat déjà enregistrés et qui permet d’enregistrer autant de
contrat que le veux l’utilisateur. L’ajout d’un nouveau contrat sera fait en posant la question : « Continuez ? O / N »
(3Pts)

4) Ecrire une procédure qui prend en entrée le numéro d’une commande, le vecteur des contrats ainsi que le fichier des
clients et affiche les informations sur le client ayant passé cette commande. (4Pts)

8/1
5) Ecrire une procédure qui prend en entrée le numéro d’un client et le vecteur des contrats, et affiche par date croissante
les contrats signés par ce dernier. (4Pts)

6) On veut établir la facture mensuelle (Mois de Janvier 2021, d’un client, Ecrire une fonction qui prend le numéro du
client et le vecteur des commandes et qui retourne le montant total à payer par ce client. (5Pts)

7) Ecrire une procédure qui prend en entrée la date courante, le vecteur des contrats et affiche la liste des contrats
expirés. (On s’intéresse qu’aux années). (2Pts)

Problème 4 : (25Pts)

On désire écrire un programme pour la gestion des électeurs d’une circonscription électorale. Un électeur est
caractérisé par son numéro de la carte d’identité nationale, son nom, sa date de naissance, sa profession et le numéro du bureau
de vote. Travail A Faire :

1) Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou Liste Chainée). Justifier votre réponse. (3Pts)

Les électeurs et les bureaux de vote sont rangés dans des fichiers.

2) Définir les structures de données permettant de représenter les électeurs et les bureaux de vote. (3Pts)

3) Ecrire une procédure pour inscrire autant d’électeurs que souhaite l’utilisateur. Le sous - programme devra poser à
chaque fois la question suivante : Voulez – Vous Enregistrer Un Nouvel Electeur ?. (4Pts)

4) Ecrire une procédure qui affiche la liste des électeurs par ordre alphabétique d’un bureau de vote donné. (6Pts)

5) Ecrire une fonction qui compte le nombre de bureaux de vote déjà enregistrés. (3Pts)

6) Ecrire une procédure qui enregistre un nouveau bureau de vote sachant qu’on ne peut pas enregistrer deux bureaux de
vote ayant le même numéro. (3Pts)

7) Ecrire une fonction qui calcule le nombre de bureaux de vote présents dans une ville donné. (3Pts)

Problème 5 : (25Pts)

On désire automatiser la gestion des transports au sein de EXPRESS Voyage Agence de Yaoundé. Un ticket de
voyage est caractérisé par le numéro du ticket, la destination, la date d’édition, le type de ticket et le numéro du client. Un
voyage est caractérisé par le numéro du voyage, la destination, le numéro de bordereau, le numéro du chauffeur, le numéro de
l’autobus, la date du voyage.

Dans la suite, on suppose que les tickets sont enregistrés dans un vecteur de taille 10000 et que les voyages sont
enregistrés dans un fichier à accès séquentiel.

1) Définir les structures de données nécessaire à la résolution du problème. (5Pts)

2)

a) Ecrire une procédure permettant de lire les informations sur un ticket. (3Pts)

9/1
b) Ecrire une procédure qui appelle la précédente et qui permet d’enregistrer un nouveau ticket sachant qu’on
dispose du nombre de ticket déjà enregistré. (3Pts)

c) Ecrire une procédure permettant d’enregistrer un nombre de tickets passé en paramètre. (2Pts)

3) Ecrire une procédure qui permet d’enregistrer 20 voyages. (4Pts)

4) Etant donné le numéro d’un client et une destination, écrire une fonction qui permet de savoir si un client a droit à un
ticket aller et retour gratuit (un client a droit à un tel ticket s’il a déjà effectué 10 voyages vers une même destination).
(4Pts)

5) Ecrire une procédure qui calcule le nombre de voyages effectué par M.KAMA dont le numéro est 25 et qui affiche les
différents numéros de bus et les différentes destinations concernées. (4Pts)

Problème 6 : (25Pts)

On désire écrire un programme pour la gestion des contrats au sein de ADHER. Un client est caractérisé par son
numéro, son nom, son prénom, sa date de naissance, sa profession.

Un contrat est caractérisé par son numéro, la date de début de contrat, la durée, le tarif, la date de signature et le
numéro du client. Travail A Faire :

1) Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou Liste Chainée). Justifier votre réponse. (3Pts)

On veut enregistrer au plus 100 client et 1000 contrats.

2) Définir des structures de données pour représenter les contrats et les clients. (3Pts)

3) Ecrire une procédure pour enregistrer autant de clients que souhaite l’utilisateur. Le sous-programme devra poser à
chaque fois la question suivante : Vous – Vous Enregistrer Un Nouveau Client ? (4Pts)

4) Ecrire une procédure qui affiche la liste des clients par ordre alphabétique d’une profession donnée. (6Pts)

5) Ecrire une fonction qui compte le nombre de contrats passés par un client dont on connait le code. (3Pts)

6) Ecrire une procédure qui enregistre un nouveau contrat sachant qu’on ne peut pas enregistrer deux contrats ayant le
même numéro. (3Pts)

7) Ecrire une fonction qui calcule le chiffre d’affaire correspondant aux contrats dont la signature a eu lieu un mois dans
une année (à titre d’exemple chiffre d’affaire des contrats du mois de Mai 2021). (3Pts)

Problème 7 : (25Pts)

On désire automatiser la gestion des salariés de la structure LYPSO. Les informations sur les salariés sont données par
son matricule d’identification interne, son nom, son adresse, sa date d’embauche, la nature de son contrat (CDD ou CDI), et la
date de sa dernière visite médicale. Une affectation quant à elle est caractérisée par le code de l’affectation, le matricule du
salarié concerné par l’affectation, le rang de l’affectation, la date d’entrée en fonction, la date de sortie, le type de poste occupé

10 / 1
et le compte d’affectation. Les informations sur l’ensemble des salariés sont stockées dans un fichier et les informations sur les
affectations sont enregistrée dans une chainée. Travail A Faire :

1) Quels avantages présentent chacune de ces structures ? (2Pts)

2) Définir des structures de données pour le stockage effectif de ces informations. (3Pts)

3) Ecrire une procédure qui permet d’enregistrer un nouveau salarié dans le fichier des salariés en évitant les doublons.
(3pts)

4) Ecrire une procédure qui permet d’enregistrer une nouvelle affectation en queue de liste tout en évitant les doublons.
(4Pts)

5) Ecrire une procédure qui étant donné le matricule d’un salarié permet d’afficher l’historique des affectations de ce
dernier. (4Pts)

6) Ecrire une procédure qui étant donné le matricule d’un salarié affiche son nom, son adresse, sa date d’embauche, son
type de poste et son compte d’affectation. (3Pts)

7) Ecrire une fonction qui étant donné une année précise retourne le nombre d’affectation qui ont eu lieu au cours de
cette année. (3Pts)

8) Ecrire une procédure qui transfère le contenu de la liste des affectations dans un fichier que vous aurez pris le soin de
définir. (3Pts)

Exercice 1 : On désire écrire un programme pour la gestion des locations de véhicules. Un Véhicule appartient à une Agence et
est caractérisée par son Numéro de Châssis, sa Marque, son Modèle et son Type. Une Agence possède un Code et est située
dans une Ville. Un Client a un Numéro, un Nom, un Prénom, une Date de Naissance et une Profession. Les Clients signent des
Contrats de Location et chaque Contrat a une durée et est signé à une Date précise. Le Prix de la Location d’un Véhicule est
fixé de façon journalière.

On suppose que les informations sur les Contrats, les Véhicules, les Agences et les Clients sont rangés dans des
vecteurs de taille respectives 5000, 100, 10, 500. Travail A Faire :

6. Définir les Structures de données permettant de résoudre le problème posé ;

7. Ecrire un Sous Programme qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats puis
enregistre un nouvel contrat. Les informations sur le contrat seront lues au clavier et le nombre de contrat enregistré
sera mis à jour ;

8. A un moment donné, le caissier a devant lui 20 clients désirant chacun signer un contrat. Ecrire un Sous Programme
qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats et qui appelle le Sous Programme
précédent pour enregistrer les contrats des 20 clients placés devant le caissier ;

11 / 1
9. Ecrire un Sous Programme qui enregistre dans le vecteur des Véhicules autant de véhicule que veut l’utilisateur
sachant qu’on doit éviter les doublons. Les informations sur les véhicules seront clues au clavier. L’utilisateur sera
appelé à répondre à la question « Continuer ? O / N » ;

10. Ecrire un Sous Programme qui trie le vecteur des clients par ordre alphabétique.

Exercice 2 : On désire écrire un programme pour gérer la location des véhicules. Une location est caractérisée par le numéro
de la location, les noms, prénoms et téléphone du client, l’immatriculation, la marque et le type du véhicule, la date de location
et la durée de la location. La date de location est un enregistrement constitué du Jour, du Mois, et de l’Année qui sont tous des
entiers. Les locations sont rangées dans une vecteur pouvant contenir au plus 100 locations. Travail A Faire :

1. Définir une structure de données pour représenter une location ;

2. Ecrire une procédure pour créer et enregistrer une location dans le vecteur. La procédure prend en paramètre TabLoc
le vecteur des locations et NBLoc le nombre de locations déjà créées ;

3. Ecrire une procédure qui affiche la liste des locations par ordre alphabétique des noms des clients ;

Exercice 3 : Ecrire un programme qui demande à l’utilisateur un nombre N et :

 Affiche la liste des diviseurs de ce nombre ;

 Affiche Le nombre de ces diviseurs ;

 Affiche la somme des diviseurs de ce nombre.

Exercice 4 : Ecrire un programme qui demande à l’utilisateur un nombre N puis vérifie si ce nombre est premier ou non. Le
Programme devra retourner un message à l’utilisateur lui disant si le nombre entré est premier ou non.

Exercice 5 : On désire automatiser l’affectation hebdomadaire des salles du collège ISTAG. Une salle est caractérisée par un
code, un libellé, un type et une capacité. Un cours est caractérisé par un code, un libellé, le nom de l’enseignant qui donne le
cours et la période à la quelle se déroule le cours. La période est un enregistrement constitué du Jour et de l’heure. Les cours et
les salles sont stockés dans des vecteurs de taille respective 50 et 30. Travail A Faire :

1. Effectuer toutes les déclarations nécessaires à la gestion des affectations hebdomadaires des salles dans ce collège ;

2. Ecrire une procédure qui permet d’enregistrer l’ensemble des cours dans le vecteur ;

3. Ecrire une procédure qui permet d’afficher tous les cours ayant lieu le « Lundi » ;

4. Ecrire une fonction qui retourne la salle qui a la plus grande capacité.

Problème 1 - 25 pts.

12 / 1
On souhaite gérer les contrats dans une entreprise de la place. Pour chaque contrat on retient le numéro du contrat, la
date du contrat, le code du client, le nombre d’intervention dans un contrat. Chaque client est caractérisé par son code et son
nom et le CA (chiffre d’affaire) réalisé par ce dernier. Les listes des clients et des contrats sont stockées dans des tableaux de
tailles respectives 2000 et 5000.

NB : Chaque Intervention Coute 25 000 FCFA.

TAF :

1. Déclarez les structures de données permettant de représenter les clients et les contrats. (5 pts);

2. Écrire un sous programme qui prend en entrée les informations sur un client et l’ajoute au tableau des clients. Le
nombre entier N désigne le nombre de clients déjà enregistré. (4 pts);

3. Écrire un sous programme qui renvoie le code du client qui a réalisé le plus gros CA. (4 pts);

4. Écrire un sous programme qui calcule le montant cout HT d’un contrat donné. (4 pts);

5. Écrire un sous programme qui renvoie le nombre de contrats dont le cout HT est supérieur à 2 500 000. (4 pts);

6. Écrire un sous programme qui donne la liste des contrats en cours. On supposera qu’un contrat est en cours si au
moins le nombre des interventions est supérieur à zéro. (4 pts).

Problème 2 - 25 pts.

Une entreprise commerciale de la place désire mettre en place un programme pour la gestion de stock de ses produits.
Un produit est donné par son code qui ne dépasse pas 5 caractères (Exemple : ND12S), sa désignation, sa catégorie, son prix de
vente (l’unité), sa quantité en stock, sa quantité d’alerte pour réapprovisionnement, le nombre d’approvisionnement déjà
effectué (avant le premier approvisionnement il est mis à zéro) et la liste des approvisionnements effectués pour ce produit
(cette liste est contenue dans un tableau et on suppose que la valeur maximale de ce tableau est de 500). Un approvisionnement
est donné par la quantité du produit, la date de l’approvisionnement et le prix d’achat. L’ensemble des produits est stocké dans
un tableau de taille 10000.

TAF :

1. Définir une structure de données pour accueillir les informations sur l’ensemble des produits. (4 pts);

2. Écrire une fonction « Existence » qui prend en entrée le code d’un produit et le tableau des produits, retourne vrai si
ce code existe déjà dans le tableau et faux dans le cas contraire. (3 pts);

3. Écrire une procédure « AjoutProduit » qui prend en entrée le tableau des produits et y enregistre un produit lu au
clavier si le code du produit n’existe pas dans le tableau. (3 pts);

4. Écrire une procédure « Affiche » qui affiche la liste de tous les produits qui doivent faire l’objet d’un
approvisionnement. Un produit doit faire l’objet d’un approvisionnement si la quantité en stock est inférieure à la
quantité d’alerte. (3 pts);

5. Écrire une procédure « ApproStock » qui prend en entrée le code d’un produit, le tableau des produits et les
informations sur nouvel approvisionnement concernant ledit produit et met à jour le tableau des produits. (3 pts);

13 / 1
6. Écrire une procédure « Modification » qui prend en entrée le tableau des produits, le code d’un produit et le nouveau
prix de vente de ce dernier puis opère le modification au niveau du tableau. (3 pts);

7. Écrire une procédure « MaxPro » qui prend en entrée le code d’un produit, le tableau des produits et qui affiche la
désignation, la date et la quantité maximale en approvisionnement concernant ledit produit. (3 pts);

8. Écrire une procédure « AfficheMax » qui prend en entrée le tableau des produits et affiche la désignation, la date et le
maximum des quantités d’approvisionnements de tous les produits contenus dans le tableau. (3 pts).

Problème 3 : (25Pts)

On désire automatiser la gestion des achats de cartouche d’encre à la société TENER EXPRESS. Chaque cartouche
est référencé, possède une désignation et un prix de vente. Un client est caractérisé par un numéro identifiant, son nom, son
adresse complète et son numéro de téléphone. Un contrat est numéroté, daté et possède une durée de validité. Un contrat
précise, pour chaque cartouche intéressant le client, le prix de vente négocié (inférieur au prix tarif) qui sera appliqué au client,
dès lors que la quantité commandée est supérieure ou égale à la quantité minimale négociée. Une commande est caractérisée
par son numéro et une liste d’informations relative à ladite commande. Une information est caractérisée par un numéro de
contrat ainsi que la quantité commandée. La liste des informations est un vecteur. Dans le cadre de ce problème, on supposera
qu’on ne peut pas faire plus de 10000 enregistrements tant pour les cartouches, les clients, les contrats, les informations et les
commandes. Travail A Faire :

8) Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou Liste Chainée). Justifier votre réponse. (3Pts)

On suppose que les informations sur les contrats, les cartouches et les commandes sont rangées dans un vecteur.
Celles sur les clients dans un fichier séquentiel.

9) Définir des structures de données permettant de résoudre le problème posé. (4Pts)

10) Ecrire une procédure qui prend en entrée le nombre de contrat déjà enregistrés et qui permet d’enregistrer autant de
contrat que le veux l’utilisateur. L’ajout d’un nouveau contrat sera fait en posant la question : « Continuez ? O / N »
(3Pts)

11) Ecrire une procédure qui prend en entrée le numéro d’une commande, le vecteur des contrats ainsi que le fichier des
clients et affiche les informations sur le client ayant passé cette commande. (4Pts)

12) Ecrire une procédure qui prend en entrée le numéro d’un client et le vecteur des contrats, et affiche par date croissante
les contrats signés par ce dernier. (4Pts)

13) On veut établir la facture mensuelle (Mois de Janvier 2021, d’un client, Ecrire une fonction qui prend le numéro du
client et le vecteur des commandes et qui retourne le montant total à payer par ce client. (5Pts)

14) Ecrire une procédure qui prend en entrée la date courante, le vecteur des contrats et affiche la liste des contrats
expirés. (On s’intéresse qu’aux années). (2Pts)

14 / 1
Problème 4 : (25Pts)

On désire écrire un programme pour la gestion des électeurs d’une circonscription électorale. Un électeur est
caractérisé par son numéro de la carte d’identité nationale, son nom, sa date de naissance, sa profession et le numéro du bureau
de vote. Travail A Faire :

8) Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou Liste Chainée). Justifier votre réponse. (3Pts)

Les électeurs et les bureaux de vote sont rangés dans des fichiers.

9) Définir les structures de données permettant de représenter les électeurs et les bureaux de vote. (3Pts)

10) Ecrire une procédure pour inscrire autant d’électeurs que souhaite l’utilisateur. Le sous - programme devra poser à
chaque fois la question suivante : Voulez – Vous Enregistrer Un Nouvel Electeur ?. (4Pts)

11) Ecrire une procédure qui affiche la liste des électeurs par ordre alphabétique d’un bureau de vote donné. (6Pts)

12) Ecrire une fonction qui compte le nombre de bureaux de vote déjà enregistrés. (3Pts)

13) Ecrire une procédure qui enregistre un nouveau bureau de vote sachant qu’on ne peut pas enregistrer deux bureaux de
vote ayant le même numéro. (3Pts)

14) Ecrire une fonction qui calcule le nombre de bureaux de vote présents dans une ville donné. (3Pts)

Problème 5 : (25Pts)

On désire automatiser la gestion des transports au sein de EXPRESS Voyage Agence de Yaoundé. Un ticket de
voyage est caractérisé par le numéro du ticket, la destination, la date d’édition, le type de ticket et le numéro du client. Un
voyage est caractérisé par le numéro du voyage, la destination, le numéro de bordereau, le numéro du chauffeur, le numéro de
l’autobus, la date du voyage.

Dans la suite, on suppose que les tickets sont enregistrés dans un vecteur de taille 10000 et que les voyages sont
enregistrés dans un fichier à accès séquentiel.

6) Définir les structures de données nécessaire à la résolution du problème. (5Pts)

7)

a) Ecrire une procédure permettant de lire les informations sur un ticket. (3Pts)

b) Ecrire une procédure qui appelle la précédente et qui permet d’enregistrer un nouveau ticket sachant qu’on
dispose du nombre de ticket déjà enregistré. (3Pts)

c) Ecrire une procédure permettant d’enregistrer un nombre de tickets passé en paramètre. (2Pts)

8) Ecrire une procédure qui permet d’enregistrer 20 voyages. (4Pts)

9) Etant donné le numéro d’un client et une destination, écrire une fonction qui permet de savoir si un client a droit à un
ticket aller et retour gratuit (un client a droit à un tel ticket s’il a déjà effectué 10 voyages vers une même destination).
(4Pts)

15 / 1
10) Ecrire une procédure qui calcule le nombre de voyages effectué par M.KAMA dont le numéro est 25 et qui affiche les
différents numéros de bus et les différentes destinations concernées. (4Pts)

Problème 6 : (25Pts)

On désire écrire un programme pour la gestion des contrats au sein de ADHER. Un client est caractérisé par son
numéro, son nom, son prénom, sa date de naissance, sa profession.

Un contrat est caractérisé par son numéro, la date de début de contrat, la durée, le tarif, la date de signature et le
numéro du client. Travail A Faire :

8) Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou Liste Chainée). Justifier votre réponse. (3Pts)

On veut enregistrer au plus 100 client et 1000 contrats.

9) Définir des structures de données pour représenter les contrats et les clients. (3Pts)

10) Ecrire une procédure pour enregistrer autant de clients que souhaite l’utilisateur. Le sous-programme devra poser à
chaque fois la question suivante : Vous – Vous Enregistrer Un Nouveau Client ? (4Pts)

11) Ecrire une procédure qui affiche la liste des clients par ordre alphabétique d’une profession donnée. (6Pts)

12) Ecrire une fonction qui compte le nombre de contrats passés par un client dont on connait le code. (3Pts)

13) Ecrire une procédure qui enregistre un nouveau contrat sachant qu’on ne peut pas enregistrer deux contrats ayant le
même numéro. (3Pts)

14) Ecrire une fonction qui calcule le chiffre d’affaire correspondant aux contrats dont la signature a eu lieu un mois dans
une année (à titre d’exemple chiffre d’affaire des contrats du mois de Mai 2021). (3Pts)

Problème 7 : (25Pts)

On désire automatiser la gestion des salariés de la structure LYPSO. Les informations sur les salariés sont données par
son matricule d’identification interne, son nom, son adresse, sa date d’embauche, la nature de son contrat (CDD ou CDI), et la
date de sa dernière visite médicale. Une affectation quant à elle est caractérisée par le code de l’affectation, le matricule du
salarié concerné par l’affectation, le rang de l’affectation, la date d’entrée en fonction, la date de sortie, le type de poste occupé
et le compte d’affectation. Les informations sur l’ensemble des salariés sont stockées dans un fichier et les informations sur les
affectations sont enregistrée dans une chainée. Travail A Faire :

9) Quels avantages présentent chacune de ces structures ? (2Pts)

10) Définir des structures de données pour le stockage effectif de ces informations. (3Pts)

11) Ecrire une procédure qui permet d’enregistrer un nouveau salarié dans le fichier des salariés en évitant les doublons.
(3pts)

12) Ecrire une procédure qui permet d’enregistrer une nouvelle affectation en queue de liste tout en évitant les doublons.
(4Pts)

16 / 1
13) Ecrire une procédure qui étant donné le matricule d’un salarié permet d’afficher l’historique des affectations de ce
dernier. (4Pts)

14) Ecrire une procédure qui étant donné le matricule d’un salarié affiche son nom, son adresse, sa date d’embauche, son
type de poste et son compte d’affectation. (3Pts)

15) Ecrire une fonction qui étant donné une année précise retourne le nombre d’affectation qui ont eu lieu au cours de
cette année. (3Pts)

16) Ecrire une procédure qui transfère le contenu de la liste des affectations dans un fichier que vous aurez pris le soin de
définir. (3Pts)

Considérons le problème suivant : (Ancien BTS National).

On souhaite automatiser la gestion des produits dans un super marché où un produit est caractérisé par sa référence, sa
désignation, sa quantité en stock, son seuil de sécurité et la date du dernier approvisionnement. Les informations sur
l’ensemble des produits sont enregistrées sur un tableau de taille 10000. TAF :

6) Définir la structure de données permettant d’enregistrer les informations sur l’ensemble des produits (5pts) ;

7) On suppose qu’il y a un certain nombre de produit N déjà enregistrés dans le tableau. Ecrire un algorithme qui permet
de lire les informations sur un nouveau produit et l’enregistre dans le tableau des produits (5pts) ;

8) Le nombre N de produits déjà enregistré dans le tableau étant toujours connu, écrire un algorithme qui permet
d’afficher la liste des produits devant faire l’objet d’une nouvelle commande. Un produit doit faire l’objet d’une
nouvelle commande si sa quantité en stock est inférieur à sa quantité seuil (5pts) ;

9) Ecrire un algorithme qui permet d’afficher la liste des produits qui ont été approvisionnée à une date qui sera lue au
clavier (5pts) ;

10) Ecrire un algorithme qui permet de trier le tableau des produits suivant la désignation du produit (5pts).

Exercice 2 (25Pts) : Considérons le problème suivant :

On souhaite enregistrer les informations sur toutes les chaises à l’Institut SIANTOU Supérieur. Une chaise est donnée
par son numéro, son emplacement, son type et sa hauteur. On suppose que dans cet institut on ne peut y avoir plus de 5000
chaises. TAF :

9) Définir la structure de données qui permet d’enregistrer les informations sur les chaises à l’Institut SIANTOU
Supérieur (4pts) ;

10) Ecrire un algorithme qui permet d’enregistrer une chaise supplémentaire (on notera par Nbre, le nombre de chaise
déjà enregistré dans le tableau) (3pts) ;

11) Ecrire un algorithme qui permet d’enregistrer 250chaises dans le tableau des chaises (on notera par Nbre, le nombre
de chaise déjà enregistré dans le tableau) (3pts) ;

12) Ecrire un algorithme qui affiche les emplacements et le nombre de chaise dont la hauteur est supérieur à 20cm (3pts) ;

17 / 1
13) Ecrire un algorithme qui affiche la hauteur de la plus grande chaise présente dans le tableau (3pts) ;

14) En supposant que la hauteur de la plus grande chaise est connue, écrire un algorithme qui affiche l’emplacement et le
numéro de la chaise correspondant à cette hauteur (3pts) ;

15) Ecrire un algorithme qui calcule le nombre de chaise dont la hauteur est comprise entre 10 et 25cm (3pts) ;

16) Ecrire un algorithme qui affiche et compte le nombre de chaise dont le type est du type rembourré (3pts).

Exercice 3 (25Pts) : Considérons le problème suivant :

On dédire automatiser la gestion d’une bibliothèque et pour cela, un ouvrage est donné par son numéro, son titre, son
auteur et l’année d’édition. On suppose qu’on ne peut pas avoir plus de 500 ouvrages dans cette bibliothèque. TAF :

5) Définir la structure de donnée permettant d’accueillir les informations sur l’ensemble des ouvrages (7pts) ;

6) Ecrire un algorithme qui étant donné le nombre des ouvrages déjà enregistré dans le tableau, enregistre un nouvel
ouvrage (6pts) ;

7) Ecrire un algorithme qui calcule et affiche le nombre d’ouvrages écris par un auteur donné (6pts) ;

8) Ecrire un algorithme qui trie le tableau des ouvrages suivant le titre (6pts).

Exercice 4 (25Pts) : Considérons le problème suivant :

On veut écrire les algorithmes pour la gestion des salariés dans une entreprise (1 500 Employés). Pour chaque
employé les informations à gérer sont : son matricule, son nom, sa fonction, sa date d’embauche, son nombre d’enfant et son
salaire de base. TAF :

7) Définir un type abstrait de données permettant de représenter les informations sur l’ensemble des employés de cette
entreprise (5pts) ;

8) Ecrire un algorithme qui permet de lire dans un tableau les informations sur l’ensemble des employés (4pts) ;

9) Ecrire un algorithme qui le matricule d’un employé et retourne la position occupée par cet employé dans le tableau
(4pts) ;

10) Ecrire un algorithme qui retourne le matricule de l’employé ayant le plus grand nombre d’enfant (4pts) ;

11) Ecrire un algorithme qui trie le tableau des employés suivant le nombre d’enfant (4pts) ;

12) Ecrire un algorithme qui calcule la masse salariale de base de l’entreprise (4pts).

Exercice 5 (25Pts) : Considérons le problème suivant :

On dédire automatiser la gestion d’une bibliothèque et pour cela, un ouvrage est donné par son numéro, son titre, son auteur et
l’année d’édition. On suppose qu’on ne peut pas avoir plus de 500 ouvrages dans cette bibliothèque. TAF :

5) Définir la structure de donnée permettant d’accueillir les informations sur l’ensemble des ouvrages (7pts) ;

18 / 1
6) Ecrire une procédure qui prends en entrée le tableau des ouvrages et le nombre des ouvrages déjà enregistré dans le
tableau, enregistre un nouvel ouvrage (6pts) ;

7) Ecrire une fonction qui calcule le nombre d’ouvrages écris par un auteur donné (6pts) ;

8) Ecrire une procédure qui trie le tableau des ouvrages suivant le titre (6pts).

Exercice 6 (25Pts) : Ecrire un algorithme qui demande à l’utilisateur un nombre entier et affiche les diviseurs de ce nombre, le
nombre de ces diviseurs et la somme des diviseurs de ce nombre.

Exercice 7 (25Pts) : Ecrire un algorithme qui demande à l’utilisateur d’entrer un nombre entier N puis vérifie si ce nombre est
premier ou pas. L’algorithme devra retourner un message à l’utilisateur si le nombre entré est premier ou non.

Exercice 8 (25Pts) : Considérons le problème suivant : (Ancien BTS National).

On désire écrire un programme pour la gestion des électeurs dans une circonscription électorale. Un électeur est
caractérisé par sa CNI, son nom, sa date de naissance, sa profession et son numéro du bureau de vote. TAF :

5) Définir la structure de données permettant de représenter les électeurs (tableau de taille 10000) (7pts) ;

6) Ecrire une procédure pour inscrire autant d’électeurs que souhaite l’utilisateur (6pts) ;

7) Ecrire une procédure qui trie les électeurs par ordre alphabétique (6pts) ;

8) Ecrire une fonction qui calcule le nombre d’électeurs dans un bureau de vote donné (6pts).

Exercice 9 (25Pts) : Considérons le problème suivant :

On souhaite gérer les contrats dans une entreprise de la place. Pour chaque contrat on retient le numéro du contrat, la date du
contrat, le code du client, le nombre d’intervention dans un contrat. Chaque client est caractérisé par son code et son nom et le
CA (chiffre d’affaire) réalisé par ce dernier. Les listes des clients et des contrats sont stockées dans des tableaux de tailles
respectives 2000 et 5000. NB : Chaque Intervention Coute 25 000 FCFA. TAF :

1) Déclarez les structures de données permettant de représenter les clients et les contrats. (5 pts) ;

2) Écrire un sous - programme qui prend en entrée les informations sur un client et l’ajoute au tableau des clients. Le
nombre entier N désigne le nombre de clients déjà enregistré. (4 pts) ;

3) Écrire un sous - programme qui renvoie le code du client qui a réalisé le plus gros Chiffre d’Affaire. (4 pts) ;

4) Écrire un sous - programme qui calcule le montant cout HT d’un contrat donné. (4 pts) ;

5) Écrire un sous - programme qui renvoie le nombre de contrats dont le cout HT est supérieur à 2 500 000. (4 pts) ;

6) Écrire un sous - programme qui donne la liste des contrats juteux. On supposera qu’un contrat est juteux si au moins
le nombre des interventions est supérieur à 10. (4 pts).

19 / 1
Exercice 11 (25Pts) : Considérons le problème suivant : (Ancien BTS National).

On souhaite automatiser la gestion de la maintenance de matériels électroménagers de haut de gamme de l’établissement


R.E.M. (Réparation Electroménager). Pour cela, un client est caractérisé par son numéro, son nom, son adresse et son numéro
de téléphone. Un matériel est donné quant à lui par son numéro de série, son type, sa marque, son modèle et le numéro du
client auquel il appartient. Une panne est caractérisée par le numéro de la panne, les symptômes y afférant, la date où le
diagnostic a été effectué et le numéro de série du matériel concerné par la panne. Les clients, les matériels et les pannes sont
stockés dans des tableaux à une dimension de tailles respectives 5000, 20000, et 50000. TAF :

1) Définir les structures de données nécessaires pour la résolution de ce problème. (5pts) ;

2) Écrire une procédure pour l’enregistrement d’un nouveau client (données sur le client entrées au clavier) tout en
évitant les doublons sachant qu’il y a un certain nombre de clients présents dans le tableau. (6pts) ;

3) Écrire une fonction qui étant donné le numéro d’un matériel retourne le nombre de fois que ce matériel a été
enregistré dans la structure. (5pts) ;

4) Écrire une procédure qui étant donné le numéro d’un client, affiche les informations sur les matériels apportés par ce
dernier. (4pts) ;

5) Écrire une procédure qui trie le tableau des clients suivant le champ nom. (5pts).

Exercice 12 (25Pts) : Considérons le problème suivant :

La Bibliothèque de l’Institut Supérieur SIANTOU contient des Livres Et Chaque Livre est identifier par : sa Référence
Ref_Livre (0 à 9999), son Titre Lib_Livre (32 Caractères Maximum), son Editeur Edit_Livre (20 Caractères Maximum), son
Année de Publication AnnPub_Livre (Entier), le Volume Vol_Livre (Entier). L’ensemble des livres est stocké dans un Tableau
TabLivre de taille 1000. TAF :

6) Définir des types de données abstraites appropriées pour l’enregistrement de ces Livres (5pts) ;

7) Ecrire une procédure Recherche () qui recherche le Livre de référence Ref dans le tableau des Livres et qui affiche
toutes les informations concernant ce Livre (5pts) ;

8) Ecrire une procédure Insert () qui insert les informations d’un nouveau Livre dans le tableau des Livres. On notera par
N, le nombre de livre déjà dans le tableau (5pts) ;

9) Ecrire une procédure Affichage () qui affiche la liste des Livres publiés en 2020 (5pts) ;

10) Ecrire une procédure Tri () qui tri le tableau sur le critère Référence (5pts) ;

Exercice 13 (25Pts) : Considérons le problème suivant : (Ancien BTS National).

On désire écrire un programme pour la gestion des locations de véhicules. Un Véhicule appartient à une Agence et est
caractérisée par son Numéro de Châssis, sa Marque, son Modèle et son Type. Une Agence possède un Code et est située dans
une Ville. Un Client a un Numéro, un Nom, un Prénom, une Date de Naissance et une Profession. Les Clients signent des
Contrats de Location et chaque Contrat a une durée et est signé à une Date précise. Le Prix de la Location d’un Véhicule est
fixé de façon journalière.

20 / 1
On suppose que les informations sur les Contrats, les Véhicules, les Agences et les Clients sont rangés dans des
vecteurs de taille respectives 5000, 100, 10, 500. Travail A Faire :

1) Définir les Structures de données permettant de résoudre le problème posé (5pts) ;

2) Ecrire un Sous - Programme qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats puis
enregistre un nouvel contrat. Les informations sur le contrat seront lues au clavier et le nombre de contrat enregistré
sera mis à jour (5pts) ;

3) A un moment donné, le caissier a devant lui 20 clients désirant chacun signé un contrat. Ecrire un Sous - Programme
qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats et qui appelle le Sous - Programme
précédent pour enregistrer les contrats des 20 clients placés devant le caissier (5pts) ;

4) Ecrire un Sous - Programme qui enregistre dans le vecteur des Véhicules autant de véhicule que veut l’utilisateur
sachant qu’on doit éviter les doublons. Les informations sur les véhicules seront clues au clavier. L’utilisateur sera
appelé à répondre à la question « Continuer ? O / N » (5pts) ;

5) Ecrire un Sous - Programme qui trie le vecteur des clients par ordre alphabétique (5pts).

Exercice 14 (25Pts) : Considérons le problème suivant : (Ancien BTS National).

On désire écrire un programme pour gérer la location des véhicules. Une location est caractérisée par le numéro de la location,
les noms, prénoms et téléphone du client, l’immatriculation, la marque et le type du véhicule, la date de location et la durée de
la location. La date de location est un enregistrement constitué du Jour, du Mois, et de l’Année qui sont tous des entiers. Les
locations sont rangées dans une vecteur pouvant contenir au plus 100 locations. Travail A Faire :

4) Définir une structure de données pour représenter une location (10pts) ;

5) Ecrire une procédure pour créer et enregistrer une location dans le vecteur. La procédure prend en paramètre TabLoc
le vecteur des locations et NBLoc le nombre de locations déjà créées (8pts) ;

6) Ecrire une procédure qui affiche la liste des locations par ordre alphabétique des noms des clients (7pts) ;

Exercice 15 (25Pts) : Considérons le problème suivant :

On désire automatiser l’affectation hebdomadaire des salles du collège SIANTOU. Une salle est caractérisée par un code, un
libellé, un type et une capacité. Un cours est caractérisé par un code, un libellé, le nom de l’enseignant qui donne le cours et la
période à laquelle se déroule le cours. La période est un enregistrement constitué du Jour et de l’heure. Les cours et les salles
sont stockés dans des vecteurs de taille respective 50 et 30. Travail A Faire :

5) Effectuer toutes les déclarations nécessaires à la gestion des affectations hebdomadaires des salles dans ce collège
(7pts) ;

6) Ecrire une procédure qui permet d’enregistrer l’ensemble des cours dans le vecteur (6pts) ;

7) Ecrire une procédure qui permet d’afficher tous les cours ayant lieu le « Lundi » (6pts) ;

8) Ecrire une fonction qui retourne la salle qui a la plus grande capacité (6pts).

21 / 1
Les informations concernant un hôtel sont Le code, Le nom, La ville, L'adresse (qui est un enregistrement composé de La boîte
postale et Le numéro de téléphone) et La disponibilité du dudit hôtel qui sera un booléen. . Les informations seront stockées
dans un vecteurs de taille 500 et dans un fichier séquentiel. Travail A Faire :

7) Donner la structure de données permettant de représenter ce système ;

8) Ecrire un sous-programme qui permet de créer un fichier d'hôtel avec autant d’éléments que souhaitera l’utilisateur.
La saisie s’arrêtera que lorsque le code sera vide ;

9) Ecrire un sous-programme qui affiche la liste des hôtels disponibles ;

10) Ecrire un sous-programme qui prend en paramètre le fichier hôtel et renvoie la taille de ce fichier ;

11) On voudrait trier le fichier des hôtels :

a. Ecrire une procédure qui permet de transférer les éléments du fichier dans le vecteur hôtel ;

b. Ecrire une procédure qui prend en paramètre le vecteur hôtel et qui le tri dans l’ordre croissant du nom de
l’hôtel ;

c. Ecrire une procédure qui permet de transférer les éléments du tableau trié dans le fichier ;

12) Ecrire un sous-programme qui prend en paramètre le fichier d'hôtel et le nom d'un hôtel puis retourne vraie si cet hôtel
existe dans le fichier et faux sinon.

Enoncé 2 : On désire automatiser la gestion d’un parc de vacance. Pour cela, une zone du parc est caractérisée par le
numéro de la zone et son libellé. Un bungalow est donné par son numéro, son libellé et le code de sa catégorie. Une catégorie
est donnée par son code, sa description, sa capacité et son prix par nuit. Une réservation est caractérisée par son numéro, le
code du client ayant effectué la réservation, le numéro du bungalow sollicité, le nombre de nuits à passer, le nombre de
suppléments sollicité et la liste des suppléments choisis. Un supplément étant caractérisé par son code, sa description et son
prix par nuit.

7) Quelle est la structure de données qui vous semble idéale pour la résolution de ce problème (vecteur, fichier) ?

Les zones et les suppléments sont stockés dans des tableaux de tailles respectives 1000 et 100. Les bungalows, les
catégories et les réservations sont stockés dans des fichiers séquentiels.

8) Définir les structures de données nécessaires à la résolution de ce problème d’après la description faite ci-dessus.

9) Ecrire une procédure qui étant donné une réservation, l’enregistre dans le fichier des réservations en évitant les
doublons.

10) Ecrire une fonction qui étant donné une réservation retourne le montant total dû aux suppléments.

11) Ecrire une fonction qui étant donné le code d’une réservation retourne le montant à payer pour cette réservation.

12) Ecrire une procédure qui transfère le fichier des catégories dans un tableau de catégories que le candidat aura pris le
soin de définir.

22 / 1
On désire automatiser la gestion d’un parc de vacance. Pour cela, une zone du parc est caractérisée par le numéro de la zone et
son libellé. Un bungalow est donné par son numéro, son libellé et le code de sa catégorie. Une catégorie est donnée par son
code, sa description, sa capacité et son prix par nuit. Une réservation est caractérisée par son numéro, le code du client ayant
effectué la réservation, le numéro du bungalow sollicité, le nombre de nuits à passer, le nombre de suppléments sollicité et la
liste des suppléments choisis. Un supplément étant caractérisé par son code, sa description et son prix par nuit.

1. Quelle est la structure de données qui vous semble idéale pour la résolution de ce problème (vecteur, fichier) ?

Les zones et les suppléments sont stockés dans des tableaux de tailles respectives 1000 et 100. Les bungalows, les
catégories et les réservations sont stockés dans des fichiers séquentiels.

2. Définir les structures de données nécessaires à la résolution de ce problème d’après la description faite ci-dessus.

3. Ecrire une procédure qui étant donné une réservation, l’enregistre dans le fichier des réservations en évitant les
doublons.

4. Ecrire une fonction qui étant donné une réservation retourne le montant total dû aux suppléments.

5. Ecrire une fonction qui étant donné le code d’une réservation retourne le montant à payer pour cette réservation.

6. Ecrire une procédure qui transfère le fichier des catégories dans un tableau de catégories que le candidat aura pris le
soin de définir.

7. On suppose à présent le fichier des catégories triée suivant le champ code de catégorie. Ecrire une procédure qui
insère une nouvelle catégorie lue au clavier dans le fichier des catégories en bonne position.

On désire écrire un programme pour la gestion des locations de véhicules. Un véhicule appartient à une agence et est
caractérisé par son numéro de châssis, sa marque, son modèle et son type. Une agence possède un code et est située dans une
ville. Un client a un numéro, un nom, un prénom, une date de naissance et une profession. Les clients signent des contrats de
location. Chaque contrat à une durée et est signé à une date précise. Le prix de la location d’un véhicule est fixé de façon
journalière.

1. Quelle est la structure de données qui vous semble la mieux adaptée pour la résolution de ce problème (Vecteur,
Fichier ou liste chainée). Justifier votre réponse.

2. On suppose que les informations sur les contrats sont rangées dans un vecteur de taille 5000 maximum et que celles
sur les véhicules et les agences sont rangés chacun dans un fichier à accès séquentiel, et celles sur les clients, dans une
liste chainée.

3. Définir des structures de données permettant de résoudre le problème posé.

4. Ecrire un sous-programme qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats puis
enregistre un nouvel contrat. Les informations sur le contrat seront lues et le nombre de contrat enregistré sera mis à
jour.

23 / 1
A un moment donné, le caissier a devant lui 20 clients désirant chacun signer un contrat. Ecrire un sous-programme
qui prend en entrée le nombre de contrats déjà enregistrés, le vecteur des contrats et qui appelle le sous-programme précédent
pour enregistrer les contrats des 20 clients placés devant le caissier.

On désire également enregistrer les véhicules. Pour cela, on donne les règles suivantes :

L’ouverture d’un fichier peut aussi se faire :

 en mode lecture (le curseur est placé au niveau du premier enregistrement : ouvrir(f, lecture)) ;

 en mode écriture (le fichier est prêt à recevoir de nouveaux enregistrements : ouvrir(f, ecriture)) ;

5. On suppose que le fichier contient déjà des enregistrements. Ecrire un sous-programme qui enregistre dans le fichier
des véhicules autant de véhicule que le veut l’utilisateur sachant qu’on doit éviter les doublons. Les informations sur
les véhicules seront lues au clavier. L’utilisateur sera appelé à répondre à la question : « Continuer ? O/N. »

6. Ecrire un sous-programme qui enregistre dans la liste chainée des clients autant de clients que le veut l’utilisateur
sachant qu’on doit éviter les doublons. Les informations sur les clients seront lues au clavier. L’utilisateur sera appelé
à répondre à la question : « Continuer ? O/N. ». L’insertion se fera en tête.

7. Ecrire un sous-programme qui tri la liste des clients par ordre alphabétique.

8. Ecrire un sous-programme qui prend en entrée le nombre d’enregistrement du vecteur des contrats et qui transfert les
informations contenues dans le vecteur dans un fichier que vous aurez pris le soin de définir.

9. Ecrire un sous-programme qui transfère le contenu des informations contenues dans le fichier des contrats
précédemment crée dans le vecteur des contrats.

10. En utilisant le fichier des contrats obtenu précédemment, écrire un sous-programme qui prend en entrée le numéro
d’un client et qui retourne le nombre de véhicules déjà loués par ce dernier.

: On désire automatiser la gestion d’un parc de vacances. Pour cela, une zone du parc est caractérisée par le numéro de la zone
et son libellé. Un bungalow est donné par son numéro, son libellé et le code de sa catégorie. Une catégorie est donnée par son
code, sa description, sa capacité et son prix pour une nuitée. Une réservation est caractérisée par son numéro, le code du client
ayant effectué la réservation, le numéro du bungalow sollicité, le nombre de nuitées à passer, le nombre de suppléments
sollicité et la liste des suppléments choisis. Un supplément étant caractérisé par son code, sa description et son prix par nuitée.

1. Quelle est la structure de données qui vous semble idéale pour la résolution de ce problème (vecteur, fichier ou liste
chainée) ?

Les zones et les suppléments sont stockés dans des tableaux de tailles respectives 1000 et 100. Les bungalows et les
catégories sont stockés dans des fichiers séquentiels. Enfin, les réservations sont stockées dans une liste chainée.

2. Définir les structures de données nécessaires à la résolution de ce problème d’après la description faite ci-dessus.

3. Ecrire une procédure qui étant donné une réservation, l’enregistre en queue de la liste des réservations en évitant les
doublons.

4. Ecrire une fonction qui étant donné une réservation retourne le montant total dû aux suppléments.

24 / 1
5. Ecrire une fonction qui étant donné le code d’une réservation retourne le montant à payer pour cette réservation.

6. Ecrire une procédure qui transfère le fichier des catégories dans une liste chainé de catégories que vous aurez pris le
soin de définir. NB : les insertions dans ladite liste se feront en tête.

7. On suppose à présent la liste des catégories triée suivant le champ code de catégorie. Ecrire une procédure qui insère
une nouvelle catégorie lue au clavier dans la liste des catégories en bonne position.

Enoncé 12 : On souhaite écrire un programme pour la gestion des ventes lors d’un marché. A ce titre, on s’intéresse
aux clients, marché, vente effectuée lors d’un marché. Chaque client est caractérisé par son code, son nom et prénom et le sexe.
Un marché est caractérisé par son code, sa date, le code du produit, les taux de retenues (1 et 2) et le prix unitaire. Une vente
est caractérisée par un numéro, le code du marché, le code du client. Une vente peut contenir plusieurs lots de produit. Pour
chaque lot contenu dans une vente, on s’intéresse à son numéro, la quantité du produit et au malus. Il va de soi que le produit
d’un lot est celui du marché sur lequel porte la vente, et que le prix unitaire est celui du marché. Les lots d’une vente sont gérés
via une liste linéaire. Les lots d’une vente sont gérés via une liste linéaire. On a un maximum de 200 clients, 40 marchés et 300
Ventes. Le tableau des clients ainsi que celui des marchés est trié par ordre alphabétique croissant sur les codes. Les variables
globales nb_clients, nb_marché, nb_vente contiennent le nombre actuel de clients, marché et vente.

1. Proposer les structures de données adéquates pour la gestion ;

2. Ecrire un sous-programme qui prend en entrée le code d’un marché et renvoie en sortie un entier indiquant la position
de ce marché dans la le tableau des marchés. Le sous-programme renvoie -1 si le marché n’existe pas dans le tableau ;

3. Ecrire un sous-programme qui prend en entrée le code d’une vente et renvoie en sortie le code du produit
commercialisé lors de cette vente ;

4. Ecrire un sous-programme qui calcule le montant d’une vente (Vous pouvez utiliser les questions précédentes) ;

On suppose que les informations sur les clients sont stockées dans le fichier « mesClients.gsm ».

5. Ecrire un sous-programme qui lit les informations du fichier et les charge dans le tableau des clients. N’oubliez pas
l’ordre ;

6. Ecrire uns sous-programme qui permet de calculer le total des ventes effectués par un client ;

On souhaite conserver dans un tableau, le montant total des ventes réalisé par clients.

7. Donner la déclaration de ce tableau ;

8. Ecrire un sous-programme qui permet de mettre à jour ce tableau ;

9. Servez-vous si possible de 7 et 8 pour écrire un sous-programme qui classe les clients par ordre décroissant sur le
montant total des ventes.

25 / 1
Enoncé 13 : On souhaite écrire des algorithmes pour la gestion des candidats et des candidatures. Chaque candidat est
caractérisé par un code, un sexe, un nom et prénom, une date de naissance, une nationalité ainsi que de la liste de ses
candidatures. Les candidatures d’un candidat sont représentées à travers une liste linéaire simplement chaînée. Chaque
candidature est caractérisée par un numéro, une date, un état(En cours, acceptée, Annulée, Rejetée), un motif, le code de la
première et de la seconde formation choisie. L’ensemble des candidats dont le maximum est supposé être 300 est stockée dans
un tableau.

1. Déclarez les structures de données nécessaires à la gestion des candidats ;

2. Ecrire un sous-programme qui renvoie le nombre total de candidatures dont l’état est passé en paramètre ;

3. Ecrire un sous-programme qui prend en entrée le tableau des candidatures et supprime toutes les candidatures dont
l’état est annulé ;

4. Ecrire un sous-programme « sauvegader » qui sauvegarde les informations sur les candidats dans un fichier dont le
nom est passé en paramètre ;

5. En P.O.O, quels sont les principaux constituants d’une classe ?;

6. Citer deux concepts importants de la P.O.O.

Enonce 14 : Dans le cadre de l’analyse précédente, on souhaite gérer les adhésions en cours de validité effectuées au
sein de CULTURE+. On suppose qu’un adhérent est inclut dans au plus une adhésion en cours. Chaque adhésion est
caractérisée par un code, une date d’enregistrement, un délai de validité, son état (Actif, Suspendue). Chaque adhérent est
caractérisé par un code un nom, un prénom, une date de naissance et un sexe ainsi que le numéro de son adhésion. La liste des
adhérents d’une adhésion est stockée à travers une liste linéaire et l’ensemble des adhésions dont le maximum est supposé être
300 est stockée dans un tableau.

1. Déclarez les structures de données nécessaires à la gestion des adhésions ;

2. Ecrire un sous-programme qui renvoie le nombre d’adhésion annulé ;

3. Ecrire un sous-programme qui permet de calculer le nombre actuel d’adhérent ;

4. Ecrire un sous-programme qui prend en entrée le numéro d’une adhésion et renvoie un entier indiquant la position de
cette adhésion dans le tableau des adhésions. On renverra la valeur -1 si ce numéro n’existe pas ;

Pour les besoins de sauvegarde permanente des informations, les informations sur les adhésions sont stockées dans le
fichier « adhesions.cin » et les informations sur les adhérents dans le fichier «adherent.cin » .

5. Ecrire un sous-programme « sauvegader » qui sauvegarde les informations sur les adhérents et les adhésions dans ces
fichiers ;

6. Ecrire un sous-programme « charger » qui lit les fichiers d’adhérent et d’adhésions et les stocke dans le tableau et la
liste linéaire correspondant ;

7. En P.O.O, quels sont les principaux constituants d’une classe ? Citer deux concepts importants de la P.O.O.

26 / 1
Enoncé 15 : On désire automatiser la gestion des achats de cartouches d’encre à la société TONER EXPRESS.
Chaque cartouche est référencée, possède une désignation et un prix de vente. Un client est caractérisé par un numéro
identifiant, son nom, son adresse complète et son numéro de téléphone. Un contrat est numéroté, daté et possède une durée de
validité. Un contrat précise, pour chaque cartouche intéressant le client, le prix de vente négocié (inférieur au "prix tarif") qui
sera appliqué au client, dès lors que la quantité commandée est supérieure ou égale à la quantité minimale négociée. Une
commande est caractérisée par son numéro et une liste d’informations relatives à ladite commande. Une information est
caractérisée par un numéro de contrat ainsi que la quantité commandée. La liste des informations est un vecteur. Une
commande est faite par un seul client. Dans le cadre de cet exercice, on supposera qu’on ne peut pas faire plus de 10000
enregistrements tant pour les cartouches, les clients, les contrats, les informations et les commandes.

1. Quelle est la structure de données qui vous semble mieux adaptée pour la résolution de ce problème (Vecteur, Fichier
ou liste chainée). Justifier votre réponse ;

On suppose que les informations sur les contrats, les cartouches et les commandes sont rangées dans un vecteur.
Celles sur les clients dans une liste chainée.

2. Définir des structures de données permettant de résoudre le problème posé ;

3. Ecrire une procédure qui prend en entrée le nombre de contrats déjà enregistrés et qui permet d’enregistrer autant de
contrat(s) que le veux l’utilisateur. L’ajout d’un nouveau contrat sera fait en posant la question : « continuez ? O/N » ;

4. Ecrire une procédure qui prend en entrée le numéro d’une commande, le vecteur des contrats ainsi que la liste chainée
des clients et affiche les informations sur le client ayant passé cette commande ;

5. Ecrire une procédure qui prend en entrée le numéro d’un client et le vecteur des contrats, et affiche par date croissante
les contrats signés par ce dernier ;

6. On veut établir la facture mensuelle (mois de JANVIER 2019) d’un client, Ecrire une fonction qui prend le numéro du
client et le vecteur des commandes et qui retourne le montant total à payer par client ;

7. Ecrire une procédure qui prend en entrée la date courante, le vecteur des contrats et affiche la liste des contrats
expirés. (On s’intéressera qu’aux années).

Enoncé 16 : On souhaite à présent gérer la publication des articles proposés par les membres. Un membre est
caractérisé par un code, un nom, une adresse, une ville, et une date d’adhésion. Un article est caractérisé par son code, un titre,
un thème, un ensemble de mots clés, l’avis final commission de lecture (Accepté, Refusé), le code de l’auteur du livre (qui est
un membre). Les mots clés d’un article sont stockés à travers une liste linéaire. On dispose d’au plus 400 articles et 50
membres. Les membres et articles sont stockées dans des tableaux. Le tableau des articles est trié sur le numéro et celui des
membres sur le code.

1. Définissez les structures mémoires nécessaires à cette gestion ;

2. Ecrire un sous-programme ajoutMotCle(a : Article, mot :chaine) qui ajoute mot dans la liste des mots clés de l’article
a ;

3. Ecrire un sous-programme qui prend en entrée une liste linéaire de mot clé, un mot et renvoie un booléen indiquant si
la liste des mots clés contient ce mot ;

4. Ecrire un sous-programme qui ajoute un nouvel article au tableau des articles ;

27 / 1
5. Ecrire un sous-programme qui prend en entrée le tableau des membres, un code et renvoie la position du code dans ce
tableau. Le sous-programme renvoie -1 si ce code n’existe pas ;

6. Ecrire un sous-programme qui renvoie la liste des articles appartenant aux membres de la ville de Yaoundé ;

7. Quels sont les inconvénients des tableaux dans le stockage des informations ;

8. Ecrire un sous-programme qui transfère les informations sur les articles refusés dans un fichier dont le nom est passé
en paramètre ;

9. Quels sont les éléments fondamentaux de la Programmation Orientée Objet ?.

Enoncé 17 : Pour atteindre les objectifs des demandeurs, il vous a été demandé de développer l’algorithme d’un
programme qui permet de gérer les règlements des clients dans l’entreprise commerciale. Tous les règlements sont enregistrés
dans le fichier classique << REGLEMENT >> dont la structure est : N°règlement, Date règlement, N°client client, N°facture
et le Montant réglé. Travail A Faire : Ecrire les Sous-programme suivants :

1. Une fonction CREATION () qui permet d’enregistrer les règlements sur le fichier <<REGLEMENT>> et retourne le
nombre de règlements enregistré ;

2. Une procédure RECHERCHE () qui recherche tous les règlements d’un client donné (N°client) ;

3. Une fonction IMPRIME () qui édite tous les règlements du fichier et retourne le montant total des règlements ;

4. Une procédure RECHERCHEMAX () qui recherche les informations du règlement dont le montant est le plus élève ;

Une fonction RECHERCHERF () de recherche booléenne (retourne vrai ou faux) qui recherche une facture donnée (N°facture)
dans ce fichier.

28 / 1

Vous aimerez peut-être aussi