1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
| program TP;
uses crt;
Type
date = record
jj,mm,aaaa:integer;
end;
adr = record
num:integer;
rue , commune , wilaya :string;
end;
Note= record
nom_mod : string;
coef : integer ;
EMD1,EMD2,EMD3,TP,SYNT,MM1,MM2,MM3,MGA : real;
class_M1 , class_M2 , class_M3 , class_A : integer;
end;
etudiant = record
mat : integer;
nom , prenom : string;
date_nais : date;
LDN , adresse : ADR;
NOTE_etud : note ;
end;
fich = file of etudiant ;
VAR
Fichier : Fich ;
i: integer;
etud:etudiant;
(* ---------- procedure qui sert a permuter les elements d'un fichier -----*)
procedure permuter ( var f: fich ; i,j:integer);
var
enre_temp , enre_temp1 : etudiant ;
begin
seek( f , i ) ;
read( f , enre_temp ) ;
seek( f , j ) ;
read( f , enre_temp1 ) ;
seek( f , i ) ;
write( f , enre_temp1 ) ;
seek( f , j ) ;
write( f , enre_temp ) ;
end;
(* --------la procedure tri_fichier_nom a pour role de trier un fichier selon le nom ------------ *)
Procedure tri_nom ( var f:fich);
VAR
enre_temp , enre_temp1 : etudiant ;
P_entre : boolean ;
i , cpt , position :integer;
nom_min : string;
begin
cpt := 1 ;
reset(f);
while (cpt <= filesize(f) ) do
begin
seek(f,cpt);
i := cpt ;
P_entre:= true;
While i <= filesize(f) do
begin
read(f,enre_temp); //<------------------------------------ (voilà l'erreur ).
if (P_entre ) then
begin
nom_min := enre_temp.nom ;
position:=i;
end
else
begin
if( nom_min > enre_temp.nom) then
begin
nom_min := enre_temp.nom;
position := i ;
end;
end;
i := i+1 ;
end;
if (position <> cpt ) then
begin
permuter(f,position,cpt);
end;
cpt := cpt+1
end;
end;
(* ----- cette procdure nous sert
remplir un fichier donn -------------*)
Procedure creer_fich_etudiants ( Var F : Fich ) ;
Var
rep : Char ;
i : integer ;
Etud : Etudiant ;
Begin
assign ( F , 'c:\bureau.txt' );
rewrite ( F ) ;
i := 2 ;
Write ( ' Veuillez saisir le Nom du 1 ier etudiant : ' ) ;
readln ( Etud.nom );
write ( ' Son prenom : ' );
readln ( Etud.prenom );
write(f,etud);
clrscr ;
writeln (' Y a t''il un autre etudiant a ajouter ? ') ;
writeln (' Si oui tapez O sinon N puis entrer !! ');
read (rep) ;
readln;
while Rep = 'o' do
begin
Write( ' Veuillez saisir le Nom du ', i,' iem etudiant : ' ) ;
readln( Etud.nom );
writeln ( ' Son prenom : ' );
read ( Etud.prenom );
write(f,etud);
clrscr ;
readln;
writeln (' Y a t''il un autre etudiant a ajouter ? ') ;
writeln (' Si oui tapez O sinon N puis entrer !! ');
read (rep) ;
readln;
i := i+1;
end;
writeln(' Merci ! :-) ');
close(F);
end;
Begin
Creer_fich_etudiants(Fichier);
readln;
tri_nom(fichier);
reset(fichier);
for i :=1 to filesize(fichier) do
begin
read(fichier,etud);
writeln(etud.nom ,' ', etud.prenom ) ;
end;
close(fichier);
end. |
Partager