Program Application_Methodes_de_TRI ; Uses Wincrt; Type Eleve = Record NumCIN:string[8]; Age:byte; Nom_Pren : string[30]; Moy_Ann,Moy_BAC

:real; End; TAB_ELEVE = Array[1..30] Of Eleve; Fich_Eleve = file Of Eleve; VAR FE : Fich_Eleve; T_ELV : TAB_ELEVE; NBE,C:Byte; Procedure Menu(VAR Choix:Byte); Begin CLRSCR; WriteLN('========================================'); WriteLN('= MENU =');

WriteLN('========================================'); WriteLN('= 1) AFFICHAGE DE LA LISTE D''ELEVES WriteLN('= 2) TRI ALPHABETIQUE DES NOMS(Bulles) WriteLN('= 3) TRI CROISSANT SELON CIN (SELECT) WriteLN('= 4) TRI CROISSANT SELON AGE (INSERT) WriteLN('= 5) TRI DECROIS.SELON MOY ANN (SHELL) WriteLN('= 6) TRI DECROIS.SELON MOY BAC (Fusion) WriteLN('= 7) SAUVEGARDE DE LA LISTE WriteLN('= 8) QUITTER ='); ='); ='); ='); ='); ='); ='); =');

WriteLN('========================================');

close(fe). for j:=1 to nbe do with t_elv[j] do writeln(numcin.moy_bac:7:2). var i. permute:byte. begin if D<f then begin .moy_ann:7:2. var i:byte.t_elv[i]). Begin reset(fe). End.nom_pren:20.f:byte).nbe:byte).age:4. begin clrscr. for i:=1 to nbe do read(fe. nbe:= filesize (fe).VAR NBE:Byte). End. Procedure Chargement(VAR FE:FICH_ELEVE.8].. procedure tri_bulles (var t_elv:tab_eleve.VAR T_ELV:TAB_ELEVE.Repeat Write('VOTRE CHOIX SVP:'). end. procedure affichage(t_elv:tab_eleve. Until Choix in [1. var j:byte.d. readln(Choix). aux:tab_eleve.

aux := t_elv[i]. for j :=k+1 to n do begin if t_elv[j].nom then aux:=t_elv[i]. procedure tri_selection(var t_elv :tab_eleve . function rechercheposmin(t_elv:tab_eleve.d. end . permute :=true .numcin<t_elv[pm].numcin then pm:=j end.n:byte):integer.d.f). t_elv[i]:= t_elv[i+1]. end . tri_bulles(t_elv. end . . for i:=d to f-1 do begin if t_elv[i]. begin if d<f then begin posmin:=recherche_posmin(t_elv.f :byte) .permute:=false. end . if posmin<> d then begin aux:=t_elv[d].d. rechercheposmin :=pm . begin pm :=k .nom>t_elv[i].numcin.f-1) .k.

procedure fusion(var t_elv:tab_eleve.v:tab_eleve. i:=i+1. end.numcin :=t_elv[posmin]. var m:byte.f).d+1.numcin . j:=j+1. j:=fp1+1. end. for k:=d to f do if (j>f)or((i<=fp1)and(t_elv[i].d. t_elv[posmin]. end.numcin :=aux .moy_bac>t_elv[j].fp1.moy_bac)) then begin v[k]:=t_elv[i].j.k:byte.f:byte). tri_selection(t_elv. var i.d.f:byte). end. end else begin v[k]:=t_elv[j]. for k:=d to f do t_elv[ k]:=v[k].t_elv[d]. . procedure tri_fusion(var t_elv:tab_eleve . begin i:=d. end .

NbE:byte).m+1.m).f). procedure Tri_Insertion (t_elv:tab_eleve . begin for i:=d+1 to f do j:=I. fusion(t_elv. end.d.d. end. T_elv[j] :=aux . tri_fusion(t_elv. var aux:tab_eleve.f). begin p:=0.age) and (j>d) do begin T_elv[i]:=t_elv[j-1]. End . f :integer). aux:tab_eleve.j:integer. tri_fusion(t_elv. while (aux<t_elv[j-1].begin if d<f then begin m:=(d+f)div 2. var p.I. J :=j-1 . repeat . procedure Tri_Shell (t_elv:tab_eleve.age. d. end. aux:=t_elv[i].m.

end.p:=3*p+1. end. for c:=1 to nbe do write(fe. until p>n. begin rewrite(fe). procedure SAUVEGARDE(t_elv:tab_eleve. p:=p div 3. end. var c:byte. while (j>p) and (aux>t_elv[j-p]. Begin write('< TAPER UNE TOUCHE POUR CONTINUER>').var fe:fich_eleve).nbe:byte. close(fe).t_elv[c]). Moy_Ann. Moy_Ann:=aux. repeat for i:=pas+1 to nbe do begin aux:=t_elv[i]. Procedure Attente. T_elv[j]. Moy_Ann . Moy_Ann:=t_elv[j-p]. j:=i. End. . p:=p div 3. Moy_Ann) do Begin T_elv[j].

Repeat Until KeyPressed. 5: begin Tri_Shell (t_elv. End. T_ELV. Attente. End. Attente. 1. Attente.'Eleves. Chargement (FE. NbE). End. NbE). Attente . 1. nbe). End. Nbe). Attente. 2: begin Tri_bulles (t_elv. End. Repeat Menu(C). Case C Of 1: begin Affichage (t_elv. nbe). 1. 4: begin Tri_Insertion (t_elv. NBE). 6:begin . Begin {Programme Principale} Assign (FE. 3: begin tri_selection (t_elv.DAT'). End.

End. fe). Clrscr .tri_fusion (t_elv. nbe). Until C =8. Attente. End. End. Writeln ('SAUVEGARDE de réussie'). 8: DoneWincrt. end . 7:begin SAUVEGARDE (t_elv. Attente. . 1. nbe.