Bonjour tout le monde

Voici mon programme d'essai mais j'ai connu un problème dans le cas où un élément se répète. Est-ce que quelqu'un peut m'aider à résoudre ce dernier svp ?
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
program tri_1tab;
 
type tab=array[1..100]of longint;
 
var   t:tab;l:longint;
 
 
 
 procedure lect_1d (var a : tab;var b :longint);
 
 var i : integer;
 
 begin
 
 writeln('donner la taille du tableau')
 
 ;readln(b);
 
 for i :=1 to b do
 
 begin
 
 write('T[',i,']=');
 
 readln( a [i] );
 
 end;
 
 end;
 
 function nb_petit(t:tab;l:longint;a:longint):longint;
 
 var i, cpt,cp,c:longint;
 
 begin
 
 c:=a; cpt:=0;
 
 for i:=1to l do
 
 begin
 
 if t[i]< t[c]   then cpt := cpt+1;
 
   end; nb_petit:=cpt;
 
 end;
 
 
 
procedure permut(var a,b:longint);
 
var c :longint;
 
begin
 
c:=a;
 
a:=b;
 
b:=c
 
end;
 
 
 
procedure tri_1tab(var t:tab;var l:longint);
 
var  i:longint;
 
 
begin
 
 for i:=1 to (l) do
 
 begin
 
 
   while ( i<> (nb_petit(t,l,i)+1)) do
 
   begin
 
    permut(t[i],t[nb_petit(t,l,i)+1]);
 
 
  end ;
 
 
 
 end;
 
end;
 
 
 
 
 
 
 
 procedure ecrire_1d (var T3:tab ;var l:longint);
 
 var i:longint;
 
 begin
 
  writeln('la table triee est =');
 
 for i:= 1 to l do
 
 writeln('T[',i,'] = ',T3[i]);
 
 end;
 
 
 
 begin
 
 lect_1d(t,l);
 
 tri_1tab(t,l); 
 
ecrire_1d(t,l);            readln;
 
 end.