Vous êtes sur la page 1sur 5

Faculté d’Electronique et d’Informatique USTHB le 03-06-2021

Département informatique
Sec11 G1/G2

Nom :
Prénom : Interrogation S2
Matricule :

Exercice
- Proposer une structure de données pour représenter les données suivantes : 03 pts
Un médicament est caractérisé par son nom (chaine de caractère), date de fabrication, date de péremption
(mois et année pour les deux dates), le prix (réel) et la quantité en stock (entier).

Ecrire un algorithme qui permet de


- créer un tableau de N médicaments (N<200). 03 pts
- d’afficher les médicaments (nom), dont la péremption est prévue à une date donnée 03 pts
- d’afficher les médicaments (nom, prix et quantité en stock), dont la quantité en stock est inférieure
ou égale à un seuil (s) donné. 03 pts
- Créer un fichier de médicaments à partir du tableau médicaments. 02 pts
- Supprimer le médicament se trouvant au milieu du fichier. 03.5pts
- Supprimer du fichier les médicaments, dont le nom commence par « DO». 02.5pts

Réponse :
Q1-
Type
date=enregistrement
m,a :entier ;
Fin enreg ;

Med=enregistrement
Nom :chaine ;
D_fab :date ;
D_per :date ;
prix:reel ;
qstock :entier ;
fin enreg ;

Q2

Algorithme medicament ;
Type reponse à la question 1
Var
Tm :tableau[1..200]de med ;
S,i,N, milieu : entier ;
d :date ;

Fm,Fi : fichier de med ;


M :med ;

Debut
Repeter lire(N) ; jusqu'à 0 <N et N<200 ;
/*remplir le tableau*/
Pour i1 à N faire
Repeter Lire(Tm[i].Nom); jusq’a longueur(Tm[i].Nom) >0 ;
Lire( Tm[i].D_fab.m, Tm[i].D_fab.a, Tm[i].D_per.m, Tm[i].D_per.a);
Repeter lire( Tm[i].prix); jusqu’a Tm[i].prix >0 ;
Repeter lire( Tm[i].qstock); jusqu’a Tm[i].qstock >0 ;
Fait;
/* Q3*/
Ecrire(‘donner la date ‘);
Lire(d.m,d.a) ;
Ecrire(’la liste des médicaments dont la péremption est prévue à la date introduite est:’ ) ;
Pour i1 à N faire
Si (Tm[i].D_per.m=d.m et Tm[i].D_per.a=d.a) alors
Ecrire (Tm[i].Nom) ;
Fsi ;
Fait ;

/*Q4*/
Ecrire(‘donner le seuil’) ;
Lire(s) ;
Pour i1 à N faire
Si (Tm[i].qstock<=s) alors
Ecrire (Tm[i].Nom, Tm[i].prix, Tm[i].qstock) ;
Fsi ;
Fait ;
/* Q5 créer un fichier de medicaments */
Assiger(Fm,’FM’) ;
Recrire(Fm) ;
Pour i1 à N faire
Ecrire(Fm,Tm[i]) ;
Fait ;
Fermer(Tm) ;
/* Q6 supprimer le médicament du milieu du fichier : puisque le fichier est rempli à partir du tableau donc
on connait la position du médicament du milieu*/
Assigner(Fi,’Fi’) ; Reecrire(Fi) ; Relire(Fm) ;
milieuN DIV 2 ;
Pour i1 à milieu faire
Lire(Fm,M) ;
Ecrire(Fi,M) ;
Fait ;
Lire(Fm,M) ;
Pour i milieu+1 à N faire
Lire(Fm,M) ;
Ecrire(Fi,M) ;
Fait ;
Fermer(Fm) ;Fermer(Fi) ;
Reecrire(Fm) ; Relire(Fi) ;
Tantque non fdf(Fi) faire
Lire(Fi,M) ;
Ecrire(Fm,M) ;
Fait ;
Fermer(Fi) ; Fermer(Fm) ;
/* Q7 suppression du fichier des medicaments dont le nom commence par ‘DO’) ;
Assigner(Fi,’Fi’) ; Reecrire(Fi) ; Relire(Fm) ;
Tantque non fdf(Fm) faire
Lire(Fm,M) ;
Si M.nom[1]<>’D’ ou M.nom[2]<>’O’ alors Ecrire(Fi,M) ;
Fsi ;
Fait ;
Fermer(Fm) ;Fermer(Fi) ;
Reecrire(Fm) ; Relire(Fi) ;
Tantque non fdf(Fi) faire
Lire(Fi,M) ;
Ecrire(Fm,M) ;
Fait ;
Fermer(Fi) ; Fermer(Fm) ;
Fin.
Exercice
- Proposer une structure de données pour représenter les données suivantes : 03 pts
Un compte en banque est caractérisé par le nom du client (chaine de caractère), Numéro de compte (entier),
le solde (réel), date de création du compte, date de fermeture du compte (jour, mois et année pour les deux
dates),

Ecrire un algorithme qui permet


- de créer un tableau de N comptes (N<100). 03 pts
- d’afficher les comptes (nom du client), dont la date de création et égale à une date donnée 03 pts
- d’afficher les comptes (nom du client , numéro de compte et solde), dont le solde est inférieure ou
égale à une valeur donnée. 03 pts
- de créer un fichier de compte à partir du tableau de comptes. 02 pts
- de supprimer les comptes se trouvant au début et à la fin du fichier. 03.5pts.
- de supprimer du fichier les comptes, dont le nom du client commence par « BE». 02.5pts

Réponse
Q1-
Type
date=enregistrement
j, m,a :entier ;
Fin enreg ;

Compt=enregistrement
Nomc :chaine ;
Numc:entier ;
solde:reel ;
D_cr :date ;
D_fe :date ;
fin enreg ;

Q2

Algorithme Compte_Banque;
Type reponse à la question 1
Var
Tc :tableau[1..100]de Compt;
i,N : entier ;
d :date ;
s :reel ;
Fc,Fi : fichier de Compt ;
M :Compt ;

Debut
Repeter lire(N) ; jusqu'à 0 <N et N<100 ;
/*remplir le tableau*/
Pour i1 à N faire
Repeter Lire(Tc[i].Nomc); jusq’a longueur(Tc[i].Nomc) >0 ;
Repeter lire( Tc[i].Numc); jusqu’a Tc[i].Numc >0 ;
Repeter lire( Tm[i].Solde); jusqu’a Tm[i].Solde >0 ;
Lire( Tc[i].D_cr.j,Tc[i].D_cr.m, Tc[i].D_cr.a, Tc[i].D_fe.j, Tc[i].D_fe.m, Tm[i].D_fe.a);
Fait;
/* Q3*/
Ecrire(‘donner la date ‘);
Lire(d.j,d.m,d.a) ;
Ecrire (’la liste comptes dont la date de création est égale à la date introduite est :’) ;
Pour i1 à N faire
Si (Tc[i].D_cr.j=d.j et Tc[i].D_cr.m=d.m et Tc[i].D_cr.a=d.a) alors
Ecrire (Tc[i].Nomc) ;
Fsi ;
Fait ;

/*Q4 la liste des soldes dont le solde est <= à une valeur données */
Ecrire(‘donner la valeur ’) ;
Lire(s) ;
Pour i1 à N faire
Si (Tc[i].solde<=s) alors
Ecrire (Tc[i].Nomc, Tc[i].Numc, Tc[i].solde) ;
Fsi ;
Fait ;
/* Q5 créer un fichier de comptes*/
Assiger(Fc,’FC’) ;
Recrire(Fc) ;
Pour i1 à N faire
Ecrire(Fc,Tc[i]) ;
Fait ;
Fermer(Tc) ;
/* Q6 supprimer les comptes du début et fin de fichier, on lit le premier et on ne l’écrit pas dans le fichier
intermédiaire et on lit les autres avec la boucle pour puisque le fichier est créé du tableau donc on connait le
nombre d’élément, on s’arrête à l’avant dernier compte */

Assigner(Fi,’Fi’) ; Reecrire(Fi) ; Relire(Fc) ;


Lire(Fc,M) ;
Pour i2 à N-1 faire
Lire(Fc,M) ;
Ecrire(Fi,M) ;
Fait ;
Fermer(Fc) ;Fermer(Fi) ;
Reecrire(Fc) ; Relire(Fi) ;
Tantque non fdf(Fi) faire
Lire(Fi,M) ;
Ecrire(Fc,M) ;
Fait ;
Fermer(Fi) ; Fermer(Fc) ;
/* Q7 suppression du fichier des comptes dont le nom commence par ‘BE’) ;
Assigner(Fi,’Fi’) ; Reecrire(Fi) ; Relire(Fc) ;
Tantque non fdf(Fc) faire
Lire(Fc,M) ;
Si M.Nomc[1]<>’B’ ou M.Nom[2]<>’E’ alors Ecrire(Fi,M) ;
Fsi ;
Fait ;
Fermer(Fc) ;Fermer(Fi) ;
Reecrire(Fc) ; Relire(Fi) ;
Tantque non fdf(Fi) faire
Lire(Fi,M) ;
Ecrire(Fc,M) ;
Fait ;
Fermer(Fi) ; Fermer(Fc) ;
Fin.

BON COURAGE

Vous aimerez peut-être aussi