Program triselection ;
uses wincrt ;
type
   tab=array [1..20] of integer ;    
var
   n,x,p : integer ; t : tab ;
 
procedure saisie (var n : integer ; var t :tab );   
var
   i : integer ;   
begin 
 repeat
  writeln('Saisir la taille du tableau :');
  readln(n);
 until n in [5..20] ;
  For i:= 1 to n do                     
   begin
    repeat
     writeln('Saisir l''élément',i) ;
     readln(t[i]) ;
    until (t[i] > 0)   
   end;  
end;
        
function pos_max(n : integer ;t :tab; p :integer):integer ; 
var
   max,i : integer ;
Begin
     max:=p ;
 for i:= p to n do
  begin
   if t[i]>t[max] then
    max:=i ;
  end;
   pos_max:=max ; 
End;
 
procedure trie (n : integer ; var t :tab )   ;
var
   i,max,p : integer ;   
Begin  
 for i:= 1 to n-1 do
  begin   
   p:=pos_max(n,t,i);
   x:=t[i];
   t[i]:=t[p];
   t[p]:=x ;
  end;
End;  
 
procedure affiche (n : integer ; t :tab) ;
var
   i : integer ; 
Begin
 for i:= 1 to n-1 do
  begin
   write(t[i]);
   write('|');
  end;
   write(t[n]); 
End;
 
Begin       
 saisie(n,t); 
 trie(n,t);
 affiche(n,t);
End.