1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
program exo87;
uses crt,graph,dos;
type tab=array[1..1000]of longint;
var t,c,r:tab;
taille:integer;
procedure lect1d(var t:tab; taille: integer);
var i: integer;
begin
for i:=1 to taille do
begin
read(t[i]);
end;
end;
procedure affiche_tab(t:tab;n:integer);
var x :integer;
t1:tab;
begin
readln(n);
for x:=1 to n do
t[x]:=t1[x];
(* affich le tableaux *)
textcolor(white);
write(#218);
for x:=1 to (n-1) do
write (#196#196#196#194);
write (#196#196#196#191);
writeln;
write(#179);
for x:=1 to n do
write(' ',#179);
writeln;
write (#179);
for x:=1 to n-1 do
begin
for x:=1 to n do
begin
textcolor(red);
write (t[x]:3);
textcolor(white);
write (#179)
end;
writeln;
write (#195);
for x:=1 to (n-1) do
write (#196#196#196#197);
write (#196#196#196#180);
writeln;
readln;
end;
end;
procedure permut(t:tab;n:integer;a,b:integer);
var i:integer;
begin
for i:=1 to n do
t[i]:=a;
a:=b;
b:=t[i];
end;
procedure get_cpt(t:tab;n:integer;var tc:tab);
var i,cpt,j:integer;
begin
for i:=1 to n do
begin
cpt:=0;
for j:=1 to n do
begin
if t[i]>t[j] then
begin
cpt:=cpt+1;
end;
end;
tc[i]:=cpt;
end;
end;
procedure tri_comp(var t,tc:tab;n:integer);
var i,j:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do begin
if tc[j]=i-1 then
begin
permut(t,n,t[j],t[i]);
permut(tc,n,tc[j],tc[i]);
end;
end;
end;
end;
procedure tri3tab(t,tc:tab;n:integer;var tr:tab);
var i,p:integer;
begin
for i:=1 to n do
begin
p:=tc[i];
tr[p+1]:=t[i];
end;
end;
begin
writeln('donner la taille du tableau');
readln(taille);
lect1d(t,taille);
affiche_tab(t,taille);
get_cpt(t,taille,c);
affiche_tab(c,taille);
tri_comp(t,c,taille);
tri3tab(t,c,taille,r);
affiche_tab(r,taille);
end. |
Partager