program pangram;
uses wincrt;
var
ch:string;
i,n:integer;
function verif(ch:string):boolean;
var
test:boolean;
j:integer;
begin j:=0;
repeat inc(j);
test:= upcase(ch[j]) in ['A'..'Z',' '];
until (j=length(ch)) or (test=false);
end;
procedure saisie(var ch:string);
begin repeat
writeln('Donner une chaine de lettres Maj et Min et espace ');
readln(ch);
until (ch<>'') and (verif(ch));
end;
function palindrome (ch:string):boolean;
var
i:integer;
test:boolean;
begin i:=0;
repeat i:=i+1;
test:=upcase(ch[i])=upcase(ch[length(ch)-i+1]);
until (test=false) or (i=length(ch) div 2);
palindrome:=test;
end;
function pangramme (ch:string):boolean;
var
t:array['A'..'Z'] of integer;
i:integer;
j:char;
begin
for j:='A' to 'Z' do t[j]:=0;
for j:='A' to 'Z' do
if (pos(j,ch)<>0) or (pos(chr(ord(j)+32),ch)<>0) then t[j]:=1;
i:=0;
for j:='A' to 'Z' do if t[j]<>0 then
i:=i+1;
pangramme:=i=26;
end;
begin
saisie(ch);
if pangramme(ch) and palindrome(ch) then
writeln('Chaine Pangramme et Palindrome en même temps') else if palindrome(ch) and not(pangramme(ch)) then writeln('Chaine Palindrome ')
else if pangramme(ch) and not(palindrome(ch))then writeln('Chaine Pangramme')
else writeln('Chaine ni Pangramme ni Palindrome');
end.