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
|
Program TriParSelection;
uses wincrt;
const NMax = 100;
Type Table=Array[1..NMax]of String;
var T:Table;
n:integer;
procedure Saisir(Var n:integer);
begin
Repeat
Writeln ('donne la taille du tableau ');
Readln(n);
until n in [1..NMax];
end;
procedure Remplir(Var T:Table; n:integer);
var i:integer;
begin
Randomize;
for i := 1 to n do
begin
writeln('donner T[',i,']');
readln(T[i]);
end;
end;
Function LMin(T:Table;i,n : integer) :integer;
var IMin,j:integer;
begin
IMin:=i;
for j := i+1 to n do
begin
if (length(T[j])< length(T[IMin]))then IMin :=j ;
end;
LMin:=IMin;
end;
Function ChMin(T:Table;i,n : integer) :integer;
var IMin,j:integer;
begin
IMin:=i;
for j := i+1 to n do
begin
if (T[j]< T[IMin])then IMin :=j ;
end;
ChMin:=IMin;
end;
procedure Permuter(var x,y :String);
var Aux:String;
begin
Aux := x;
X:=y;
Y:=Aux;
end;
procedure Tri_Selection(var T:Table; n:integer);
var i,pmin,cmin:integer;
begin
for i := 1 to n-1 do
begin
pmin:=LMin (T,i,n);
cmin:=ChMin(T,i,n);
if (T[pmin]<> T[i])then
Permuter(T[pmin], T[i])
else if(T[cmin]=T[i])then
Permuter(T[cmin], T[i]);
end;
end;
procedure Afficher(T:Table ; n:integer);
var i:integer;
begin
for i := 1 to n do
write(T[i]:7);
end;
{Programme Principal}
begin
Saisir(n);
Remplir(T,n);
writeln('le tableau avant tri');
writeln('**********************************************************');
Afficher(T,n);
writeln;
writeln('**********************************************************');
Tri_Selection(T,n);
writeln('le tableau après tri');
writeln('**********************************************************');
Afficher(T,n);
writeln;
writeln('**********************************************************');
end. |
Partager