program mardi_28_05_2013_14h;
uses wincrt;
type tab=array[1..20]of integer;
var T:tab;
n:integer;
procedure saisie(var T:tab; var n:integer);
var i:integer;
begin repeat
writeln ('Donner un entier ;');
readln (n) ; until n in [5..20] ; for i:=1 to n do begin
write('T',i,']= ');
readln(T[i]);
end;
end ;
Procedure segmenter(var T:tab;n:integer);
var i,j,k,temp,s: integer;
t1,t2:tab;
begin temp:=T[1];
j:=0;
k:=0;
for i:=2 to n do if T[i]<=temp then begin
j:=j+1;
t1[j]:=T[i];
end else begin k:=k+1;
t2[k]:=T[i];
end;
for i:=1 to j do T[i]:=t1[i];
T[j+1]:=temp;
for s:=1 to k do T[s+j+1]:=t2[s];
end;
procedure affichage(t:tab;n:integer);
var i:integer;
begin
for i:=1 to n do write( T[i],' ');
end;
{Programme principale}
begin saisie(t,n);
segmenter(t,n);
writeln('Le tableau suite à la segmentation sera :');
affichage(t,n);
end.