uses wincrt;
type
tab=array[1..40] of integer;
var t,t1,v:tab;
n:integer;
procedure saisie(var n:integer;var t:tab);
var i:integer;
begin repeat
write('n='); readln(n) ; until n in [5..40];
for i:=1 to n do repeat
write('t[',i,']=');
readln(t[i]);
until t[i]>0;
end;
procedure suite(var t1:tab);
var i:integer;
begin t1[1]:=1;
for i:=2 to n do begin
t1[i]:=3*t1[i-1] -1;
write(t1[i],' ');
end;
end;
function existe(t:tab;x:integer):boolean;
var i:integer;
trouve:boolean;
begin i:=0;
repeat i:=i+1;
if t[i]=x then trouve:=true else trouve:=false;
until (trouve) or (i=n);
existe:=trouve;
end;
procedure creerv(var v:tab);
var
i,j,k:integer;
begin j:=0;
for i:=1 to n do if existe(t1,t[i]) then begin
j:=j+1;
v[j]:=t[i];
end;
k:=0;
for i:= 1 to n do if existe(v,t1[i]) then begin
k:=k+1;
write(t1[i],' ') ; end;
if k=0 then write('Aucun élément de T ne correspond à un terme de la suite U ') ;
end;
begin saisie(n,t);
write('Les terme de la suite sont : ');
suite(t1);
writeln;
write('Le programme affichera : ');
creerv(v);
end.