Vous êtes sur la page 1sur 3

EXAMEN PRATIQUE

Semestre : 1 2

Session : Principale Rattrapage

Module : Programmation Procédurale I


Enseignant(s) : Equipe Programmation C
Classe(s): 1A3, 1A4, 1A7, 1A9, 1A10
Documents autorisés : OUI NON Nombre de pages : 03

Connexion autorisée : OUI NON


Date : 30/11/2015 Heure :14h Durée :1h.30

Remarques :

 Les cours et les TP de c sont autorisés


 La note de l’exécution sera binaire
 L’algorithme sera noté selon votre explication
 Des sanctions vous seront attribuées pour toute utilisation :
o Des noms non significatifs (variables, fonctions…)
o Des noms non conformes à l’énoncé
 Une fois le temps de l’épreuve est écoulé, vous devez quitter la salle en laissant vos PC déverrouillés.

Enoncé :

On souhaite développer une application qui permet de gérer la liste des médicaments dans une
pharmacie.
Cette application permet à travers un menu :
 L’ajout d’un nouveau médicament.
 La suppression d'un médicament après la vérification de sa date d’expiration.
 La vente d’un médicament.
 Le calcul des statistiques sur la vente d’un médicament donné.

Pour ce faire on se propose de stocker les médicaments dans un tableau. Un médicament est
caractérisé par :
 code : Le code du médicament de type int.
 date d’expiration :Une structure contenant le jour, le mois et l’année.
 quantite : La quantité disponible en stock de type int.
 un tableau de ventes tab : Il contient 12 cases contenant le nombre de médicament
vendu par mois.

Développer alors:

1
Une fonction principale main contenant un menu qui assure le bon
fonctionnement de l’application. La fonction main doit être mise à jour au fur et à
mesure du développement des différentes fonctions qui suivent :

1. Medicament saisir_medicament() qui permet la saisie d’un médicament et de le


retourner par la suite. Le tableau tab contiendra initialement 0 pour tous les mois.

2. void ajouter_me dicame nt(Medicament m, Medicament T[], int n) qui permet


d’ajouter un médicament m passé en paramètre dans le tableau des médicaments T et
retourner la nouvelle taille du tableau.

3. void affiche r (Medicament T[], int n) qui permet d’afficher le tableau de


médicaments. L’affichage des champs code et quantité est suffisant.

4. int chercher (Medicament T[],int n,int code) qui permet de chercher un


médicament donné par son code. La fonction retournera l’indice du médicament s’il
existe dans le tableau T et -1 sinon.

5. int verifier_date(Medicament m, Date date_courante) qui permet de vérifier si un


médicament a expiré ou non. Cette fonction prend en argument un médicament, la date
courante. Elle retournera 1 si le médicament est encore valide 0 sinon.

6. int supprimer(Medicament T[],int n,int code, Date date_courante) qui permet de


supprimer un médicament dont la date d’expiration est dépassée. La fonction devra
afficher un message si le médicament est encore valide. Cette fonction retournera la
nouvelle taille du tableau.

7. void vente_medicament(Medicament T[],int n,int code,Date date_courante) qui


permet de vendre un médicament donné en paramètre par son code. Cette fonction
permet de mettre à jour les champs quantite et le tableau de vente tab.
Pour ce faire, vous devez commencer par chercher le médicament dans le tableau.
Ensuite, vous allez décrémenter de 1 la quantité disponible du médicament en
question. Vous devez aussi incrémenter de 1 le nombre de ventes du médica ment
selon le mois contenu dans la date_courante donnée en paramètre.

8. int stat(Medicament T[],int n,int code) qui permet de faire des statistiques sur la
vente d’un médicament donné par son code retourner l'indice du mois où il a été le
plus vendu.

Bon Travail !

2
Grille d’évaluation
Nom :………..………………………………… CLASSE :……………………
NB: (-1 pt) pour chaque déclaration( variables, fonctions, structure) non
significative.

Travail demandé Exécution* Algorithmique Total


Définition de type Medicament 0.5
Définition de type Date 0.5
saisir_medicament 0.5
ajouter_medicament 1 1 2
afficher 1 1
chercher 1 1 2
Verifier_date 1 1.5 2.5
supprimer 1 2 3
Vente_medicament 1 2.5 3.5
stat 1 1.5 2.5
main 2

Nombre de sanctions :

Total :
20

(*)L'éxecution est binaire.

Vous aimerez peut-être aussi