program devoir11H; uses wincrt; TYPE mat=array[1..100] of string[8]; sc=array[1..100] of integer; sctrie=array[1..100,1..100] of integer; VAR i,n:integer; matricule:mat; score:sc; {************** Fonction de vérification d'une matricule (composée par des chiffres) **************} FUNCTION Verifier(ch:string):boolean; var i:integer; trouve:boolean; begin i:=0; repeat i:=i+1; trouve:=ch[i] in ['0'..'9']; until (i=length(ch)) or (trouve=false); Verifier:=trouve; end; {************** Procédure Remplir du tableau des matricules **************} PROCEDURE RemplirMatricules(var matricule:mat; n:integer); Var i:integer; BEGIN For i:=1 to n do begin Repeat Write('Donner une matricule pour l''employé n° ', i,': '); readln(matricule[i]); until(length(matricule[i])=8) and (Verifier(matricule[i])=true); end; end; {************** Proédure Remplir du tableau des scores **************} PROCEDURE RemplirScores (var score: sc;n:integer); Var i:integer; BEGIN For i:=1 to n do begin Repeat Write('Donner un score pour l''employé n° ', i,': '); readln(score[i]); until(score[i] in [20..120]); end; end; {************** Procédure Tri du tableau des scores **************} PROCEDURE TrierScores (var matricule:mat; var score:sc ;n:integer); var aux2:string; aux1,i:integer; echange:boolean; begin repeat echange:=false; for i:=1 to n-1 do begin if score[i]< score[i+1] then begin aux1:=score[i]; score[i]:=score[i+1]; score[i+1]:=aux1; aux2:=matricule[i]; matricule[i]:=matricule[i+1]; matricule[i+1]:=aux2; echange:=true; end; end; until echange=false; end; {************** Procédure Afficahage des admis **************} PROCEDURE affichage(n:integer;matricule:mat;Score:sc); var i:integer; begin write('Liste des admins: '); for i:=1 to round(n /4) do begin write(matricule[i],' '); end; end; {************** La procédure saisir **************} PROCEDURE saisir(var n:integer); Begin Repeat Write('Donner le nombre des employés: '); readln(n); until(n in [5..100]); end; {************** Le preogramme principal **************} BEGIN saisir(n); Writeln('----------------------------------------------------'); RemplirMatricules(matricule,n); Writeln('----------------------------------------------------'); RemplirScores (score,n); Writeln('----------------------------------------------------'); TrierScores(matricule,score,n ); Writeln('----------------------------------------------------'); affichage(n,matricule, score); END.