program Ex_09_30_s4;
uses wincrt;
type
tab =array[1..30] of integer;
var t:tab;
n,i:integer;
procedure saisie (var t:tab; var n : integer);
begin repeat
writeln('Donner n entre 5..30');
readln(n);
until n in [5..30];
for i:= 1 to n do repeat
writeln('Donner T ',i);
readln(t[i]);
until (t[i]>=1000) and (t[i]<=9999);
end;
function bonheur(x:integer):boolean;
var tx:tab;
j,diff:integer;
test:boolean;
begin
tx[1]:=x div 1000;
tx[2]:=x mod 1000 div 100;
tx[3]:=x mod 100 div 10;
tx[4]:=x mod 10;
diff:=tx[2]-tx[1];
test:=true;
for j:=3 to 4 do
if not(((tx[j]>tx[j-1]) and (tx[j]-tx[j-1]=diff)) or ((tx[j]<tx[j-1]) and (tx[j]-tx[j test:=false;
bonheur:=test;
end;
procedure Affiche(t:tab; n :integer);
begin
for i:=1 to n do write(t[i],' | ');
end;
begin
saisie(t,n);
affiche(t,n);
writeln;
writeln('Les nombres Porte-Bonheur du tableau sont :');
for i:=1 to n do
if bonheur(t[i]) then write (t[i],' | ');
end.