Есть такая задача:
Имеется большой словарь русских слов. Найти в нём слова-палиндромы и фразы палиндромы ("перевёртыши"), одинаково читающиеся как слева направо, так и справа налево, например, АННА, ШАЛАШ, "А роза упала на лапу азора".
Помогите, плиз, её решить.
P.S. прошу прощения у модераторов: я случайно не туда запостил тему. Переместите, пжлст, в задачи...
Код
program Palind;
{ Перевод символа в кодировке "Codepage 866" (DOS) в верхний регистр }
function UpCase866(c: Char): Char;
begin
case c of
#0..#127:
c := UpCase(c);
#160..#175:
Dec(c, 32);
#224..#239:
Dec(c, 80);
'ё':
c := 'Ё';
end;
UpCase866 := c;
end;
{ Проверка, является ли слово палиндромом }
function IsPalindrome(const Word: String): Boolean;
var
i: Integer;
begin
for i := 1 to Length(Word) div 2 do
if Word[i] <> Word[Length(Word) - i + 1] then
begin
IsPalindrome := False;
Exit;
end;
IsPalindrome := True;
end;
var
f: Text;
s, sn: String;
i: Integer;
begin
Assign(f, 'dict.txt');
Reset(f);
while not Eof(f) do
begin
Readln(f, s);
sn := '';
for i := 1 to Length(s) do
if (s[i] <> ' ') and (s[i] <> #9) then
sn := sn + UpCase866(s[i]);
if IsPalindrome(sn) then
Writeln(s);
end;
Close(f);
end.