-->
-->
Soit T un tableau contenant N
entiers > 0 avec ( 5 < N < 20) et N est pair.
On se propose de verifier si T est
(identique,symetrique,reversible,croissant,normal).
program verification;
uses wincrt;
type tab=array[1..30] of integer;
var i,n:integer; t:tab;
procedure saisie(var n:integer;var t:tab);
var i:integer;
begin
repeat
writeln('donner n');
readln(n);
until (n<=20) and (n>=3);
for i:=1 to n do
repeat
writeln('donner t[',i,']');
readln (t[i]);
until (t[i]>0)
end;
function ident(n:integer;t:tab):boolean;
var i:integer;b:boolean;
begin
i:=0;
repeat
i:=i+1;
b:=t[i] =t[i+1];
until not(b) or (i=n-1);
ident:=b;
end;
function sym(n:integer;t:tab):boolean;
var i:integer;b:boolean;
begin
i:=0;
repeat
i:=i+1;
b:=t[i]=t[n-i+1];
until not(b) or (i=n div 2);
sym:=b ;
end;
function croiss(n:integer;t:tab):boolean;
var i:integer;b:boolean;
begin
i:=0;
repeat
i:=i+1;
b:=t[i]<t[i+1]
until not(b) or (i=n-1);
croiss:=b;
end;
function inverse(x:integer):integer;
var b:boolean;ph,ch:string;v,i,e:integer;
begin
str(x,ch);
ph:='';
for i:=1 to length (ch) do
ph:=ch[i]+ph;
val(ph,v,e);
inverse:=v;
end;
function revers(n:integer;t:tab):boolean;
var i:integer;b:boolean;
begin
i:=0;
repeat
i:=i+1;
b:=t[i]=inverse(t[n-i+1]);
until not(b) or (i=n div 2);
revers:=b;
end;
begin
saisie(n,t);
if ident (n,t)
then write ('le tableau t est identique')
else if
revers(n,t) then write ('le tableau est reversible')
else if
croiss(n,t) then write ('le tableau est croissant')
else if sym(n,t)
then write('le tableau est symetrique')
else write('le
tableau est normale')
end.