Палиндромы
Добавлено: 23 дек 2009, 18:00
Создать программу, проверяющую является ли строка текстовым палиндромом
Вот мой рабочий вариант,НО,мне нужно его не много упростить. Тоисть сделать так,чтобы не задавать константу символом,а чтобы программа сама удаляла их... Помогите
uses crt;
const rz=['.',',',';',':','?','!','-',' '];
procedure Format(var st:string);
var i:byte;
begin
for i:=length(st)downto 1 do
if st in rz then delete(st,i,1);
for i:=1 to length(st) do
st:=upcase(st);
for i:=1 to length(st) do
if st in ['а'..'п'] then st:=chr(ord(ord(st)-32))
else if st in ['р'..'я'] then st:=chr(ord(ord(st)-80))
else if st='ё' then st[i]:='Ё';
end;
procedure Palindrom(st:string);
var s1:string;
i:byte;
begin
s1:='';
for i:=length(st)downto 1 do
s1:=s1+st[i];
if st=s1 then write('palindrom')
else write('ne palindrom');
end;
var s:string;
begin
clrscr;
writeln('vvedite text:');
readln(s);
Format(s);
Palindrom(s);
readln
end.
Вот мой рабочий вариант,НО,мне нужно его не много упростить. Тоисть сделать так,чтобы не задавать константу символом,а чтобы программа сама удаляла их... Помогите

uses crt;
const rz=['.',',',';',':','?','!','-',' '];
procedure Format(var st:string);
var i:byte;
begin
for i:=length(st)downto 1 do
if st in rz then delete(st,i,1);
for i:=1 to length(st) do
st:=upcase(st);
for i:=1 to length(st) do
if st in ['а'..'п'] then st:=chr(ord(ord(st)-32))
else if st in ['р'..'я'] then st:=chr(ord(ord(st)-80))
else if st='ё' then st[i]:='Ё';
end;
procedure Palindrom(st:string);
var s1:string;
i:byte;
begin
s1:='';
for i:=length(st)downto 1 do
s1:=s1+st[i];
if st=s1 then write('palindrom')
else write('ne palindrom');
end;
var s:string;
begin
clrscr;
writeln('vvedite text:');
readln(s);
Format(s);
Palindrom(s);
readln
end.