Ce programme permet de trier un tableau des chaines de caractère selon les deux critères suivants:
  • longuer en premier lieu
  • ordre alphabétique en deuxième lieu

Lorsque j'execute le programme il m'affiche Runtime error 202 at 0001:0356
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.