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
| program test_zone_debordement;
type tab1d=array[1..10000] of longint;
var taille:longint;
T:tab1d;
procedure permut(var A,B:longint);
(* ------------------------------------------------------ *)
(* Ce procedure permet de permuter A avec B *)
(* ------------------------------------------------------ *)
var save:longint;
begin
save:=A;
A:=B;
B:=save;
end;
function ind_min_1d(T:tab1d;b1,b2:longint):longint;
(* --------------------------------------------------------------------------------------------- *)
(* Cette fonction donne l'indice de l'élément le plus petit du tableau T entre l'indice b1 et b2 *)
(* --------------------------------------------------------------------------------------------- *)
var i,ind,pp:longint;
begin
ind:=b1;
pp:=T[b1];
for i:=b1+1 to b2 do
if pp>T[i] then
begin
pp:=T[i];
ind:=i;
end;
ind_min_1d:=ind;
end;
procedure tri_sel(var T:tab1d;taille:longint);
(* ----------------------------------------------------------------------- *)
(* Cette procedure trie les éléments du tableau T d'une manière croissante *)
(* ----------------------------------------------------------------------- *)
var i:longint;
begin
for i:=1 to taille-1 do
permut(T[i],T[ind_min_1d(T,i,taille)]);
end;
procedure lect1d(var T:tab1d; var taille:longint);
(* ------------------------------------------------------------------------------------------ *)
(* Cette procedure permet de lire un tableau à 1 dimension dont les éléments sont des entiers *)
(* ------------------------------------------------------------------------------------------ *)
var i:longint;
begin
writeln('Donner la taille du tableau');
readln(taille);
writeln('veuillez saisire les éléments de votre tableau');
for i:=1 to taille do
begin
writeln('T[',i,']=');
read(T[i]);
end;
end;
function zone_debor(T:tab1d;taille:longint):longint;
(* ------------------------------------------------------------------------------ *)
(* Cette fonction calcule le nombre de synonymes dans un tableau 1 dimension trié *)
(* ------------------------------------------------------------------------------ *)
var i,cpt:longint;
begin
cpt:=0;
for i:=2 to taille do
begin
while T[i-1]=T[i] do
cpt:=cpt+1;
end;
zone_debor:=cpt;
end;
begin
lect1d(T,taille);
tri_sel(T,taille);
writeln('la taille du débordement est:',zone_debor(T,taille));
readln;
end. |
Partager