Program triinsertion ; 
uses wincrt ; 
type 
    tab=array[1..20] of integer ; 
var 
 n,x,i : 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''element ',i); 
     readln(t[i]); 
    until t[i] > 0 ; 
   end; 
End; 
 
function position (t:tab ; i : integer ): integer ; 
var 
   j : integer ; 
Begin 
 j:=0 ; 
  repeat 
   j:=j+1 ; 
  until t[j] >= t[i] ; 
 position:=j ; 
End; 
 
procedure tri(var t : tab ; n:integer ); 
var 
int,i,j,p : integer ; 
Begin 
 for i:=2 to n do 
  begin 
   p:=position(t,i); 
    if p <> i then 
     begin 
      int:=t[i] ; 
       for j :=i-1 downto p do 
        begin 
         t[j+1]:=t[j] ; 
        end; 
      t[p]:=int ; 
     end; 
  end;  
End; 
 
procedure affiche (var t :tab ; n : integer ); 
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); 
 x:=position(t,i); 
 tri(t,n); 
 affiche(t,n); 
end.