Страница 1 из 1

Палиндромы

Добавлено: 23 дек 2009, 18:00
hohotushka
Создать программу, проверяющую является ли строка текстовым палиндромом
Вот мой рабочий вариант,НО,мне нужно его не много упростить. Тоисть сделать так,чтобы не задавать константу символом,а чтобы программа сама удаляла их... Помогите :(
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.

Re: Палиндромы

Добавлено: 24 дек 2009, 09:40
Хыиуду
Как много букв...
for i:=1 to length(s) div 2 do
if s<>s[length(s)-i+1] then begin writeln('Не является!'); exit; end;
writeln('Является!');

Re: Палиндромы

Добавлено: 24 дек 2009, 18:43
hohotushka
Хыиуду писал(а):Как много букв...
for i:=1 to length(s) div 2 do
if s<>s[length(s)-i+1] then begin writeln('Не является!'); exit; end;
writeln('Является!');

Это вставить в procedure Palindrom :confused:
поясните пожалуйста более детально,очень прошу :(

Re: Палиндромы

Добавлено: 28 дек 2009, 12:45
Хыиуду
Да, это весь код процедуры. Только замените в объявлении процедуры переменную st на s. Или наоборот в коде процедуры - s на st