program eleve_reussite;
uses wincrt;
type
rec = record
nom,pre:string[30];
note:real;
end;
fichier=file of rec;
eleve= record
nom,pre:string[30];
noteT,noteP,noteS:real;
carte_ident:string[8];
end;
fichier_eleve=file of eleve;
var
fichierNT,fichierNP,fichierNS:fichier;
les_eleves:fichier_eleve;
choix:integer;
{procedure permettant de remlpir les trois fichiers}
procedure ajout(var fich:fichier;num :integer);
var
p:rec;
begin
clrscr;
if num=1 then
writeln('ajout dans le fichierNT')
else if num=2 then
writeln('ajout dans le fichierNP')
else writeln('ajout dans le fichierNS');
write('Nom :');readln(p.nom);
write('Prenom :');readln(p.pre);
repeat
begin
if num=1 then
write('Note theorique :')
else if num=2 then
write('Note pratique :')
else
write('Note synthese :');
readln(p.note);
end;
until (p.note >=0 )and (p.note<=20);
write(fich,p);
clrscr;
end;
{procedure qui cree le ficher eleve'}
procedure creation(var fichier : fichier_eleve; var fichNT:fichier; var fichNP:fichier;var fichNS:fichier);
var
inf:eleve;
inf1,inf2,inf3:rec;
erreur:integer;
numero:real;
test:boolean;
begin
while(not eof(fichNT)) do
begin
read(fichNT,inf1);
read(fichNP,inf2);
read(fichNS,inf3);
inf.nom:=inf1.nom;
inf.pre:=inf1.pre;
inf.noteT:=inf1.note;
inf.noteP:=inf2.note;
inf.noteS:=inf3.note;
test:=true;
repeat
begin
clrscr;
writeln('ajout de la carte d''identite pour l''eleve ', inf.nom,' ' ,inf.pre);
write('donner la carte d''identite ');
readln(inf.carte_ident);
val(inf.carte_ident,numero,erreur);
end;
until (length(inf.carte_ident)<>
or (erreur<>0);
write(fichier,inf);
end;
end;
function pourcentage (var fichier: fichier_eleve):real;
var
total,admis:integer;
moyenne:real;
m:eleve;
begin
admis:=0;
total:=filesize(fichier);
while( not eof(fichier)) do
begin
read(fichier,m);
moyenne:=(m.noteT+m.noteP+m.noteS*2)/4;
if moyenne >= 10 then
admis:=admis+1;
end;
pourcentage:=(admis/total)*100;
end;
{affichage du contenu du fichier les eleves}
procedure affichage (var fichier: fichier_eleve);
var
inf:eleve ;
begin
while( not eof(fichier)) do
begin
clrscr;
read(fichier,inf);
write ('nom : ' ,inf.nom,' prenom : ',inf.pre,' carte identite : ' , inf.carte_ident,' NT : ');
write(inf.noteT:5:2,' NP : ',inf.noteP:5:2,' NS : ',inf.noteS:5:2);
writeln;
end;
end;
begin
assign(fichierNT,'c:\bac2011\NT.dat');
rewrite(fichierNT);
ajout(fichierNT,1);
repeat
begin
choix:=0;
writeln('ajout dans le fichierNT');
writeln('voulez vous ajouter un autre enregistrement ');
writeln('1 :continuer');
writeln('0 :quitter');
readln(choix);
if(choix=1) then
ajout(fichierNT,1);
end;
until(choix<>1);
close(fichierNT);
assign(fichierNP,'c:\bac2011\NP.dat');
rewrite(fichierNP);
ajout(fichierNP,2);
repeat
begin
choix:=0;
writeln('ajout dans le fichierNP');
writeln('voulez vous ajouter un autre enregistrement ');
writeln('1 :continuer');
writeln('0 :quitter');
readln(choix);
if(choix=1) then
ajout(fichierNP,2);
end;
until(choix<>1);
close(fichierNP);
assign(fichierNS,'c:\bac2011\NS.dat');
rewrite(fichierNS);
ajout(fichierNS,3);
repeat
begin
choix:=0;
writeln('ajout dans le fichierNS');
writeln('voulez vous ajouter un autre enregistrement ');
writeln('1 :continuer');
writeln('0 :quitter');
readln(choix);
if(choix=1) then
ajout(fichierNS,3);
end;
until(choix<>1);
close(fichierNS);
assign(les_eleves,'c:\bac2011\les_eleves.dat');
rewrite(les_eleves);
reset(fichierNT);
reset(fichierNP);
reset(fichierNS);
creation(les_eleves,fichierNT,fichierNP,fichierNS);
close(fichierNT);
close(fichierNP);
close(fichierNS);
close(les_eleves);
reset(les_eleves);
affichage(les_eleves);
close(les_eleves);
reset(les_eleves);
writeln('la pourcentage de la reussite est de ',pourcentage(les_eleves):5:2);
close(les_eleves);
end.