structure Personne { nom : chaine prenom : chaine email : chaine grade : chaine numero : chaine } procedure Information(E f: Fichier, E nom: chaine, E prenom: chaine) { variable p, last : Personne nbidentik : entier tel : chaine nbidentik <-- 0 Decaler(f, Debut_Fichier, 0) Tantque (Non Fin(f)) { Lire(f,p) Si (p.nom=nom ET p.prenom=prenom) alors { last <-- p nbidentik <-- nbidentik + 1 } } Si (nbidentik = 0) alors { Afficher("Il n'y a personne avec ce nom et prénom") } sinon { Si (nbidentik = 1) alors { AfficherPersonne(p) } sinon { Afficher("Veuillez saisir le télephone") Saisir(tel) Decaler(f, Debut_Fichier, 0) Tantque (Non Fin(f)) { Lire(f,p) Si (p.nom=nom ET p.prenom=prenom ET p.numero = tel) alors { AfficherPersonne(p) } } } } } procedure construction(E f: Fichier, E/S tab_MC: tableau de Personne, S nbMC entier E/S tab_PR: tableau de Personne, S nbPR entier) { variable p : Personne nbMC <-- 0 nbPR <-- 0 Decaler(f, Debut_Fichier, 0) Tantque (Non Fin(f)) { Lire(f,p) Si (p.grade ="MC") alors { nbMC <-- nbMC +1 } sinon { Si (p.grade ="PR") alors { nbPR <-- nbPR +1 } } } tab_MC <-- Allouer tableau de nbMC Personne tab_PR <-- Allouer tableau de nbPR Personne nbMC <-- 0 nbPR <-- 0 Decaler(f, Debut_Fichier, 0) Tantque (Non Fin(f)) { Lire(f,p) Si (p.grade ="MC") alors { tab_MC[nbMC] <-- p nbMC <-- nbMC +1 } sinon { Si (p.grade ="PR") alors { tab_PR[nbPR] <-- p nbPR <-- nbPR +1 } } } } procedure promotion(E f: Fichier, E nom: chaine, E prenom: chaine) { variable p: Personne Trouve : booleen Trouve <-- FAUX Decaler(f, Debut_Fichier, 0) Tantque (Non Fin(f) ET NON TROUVE) { Lire(f,p) Si (p.nom=nom ET p.prenom=prenom) alors { p.grade <-- "PR" TROUVE <-- VRAI } } } fonction NombreMC(E f: Fichier) : entier { variable p : Personne nbMC <-- 0 Decaler(f, Debut_Fichier, 0) Tantque (Non Fin(f)) { Lire(f,p) Si (p.grade ="MC") alors { nbMC <-- nbMC +1 } } retourne nbMC }