I
ilsen
Помогите плз, задание такое:
Имеется большой словарь русских слов. Найти в нем слова-палиндромы («перевертыши»), одинаково читающиеся как слева направо, так и справа налево, например, АННА, ШАЛАШ и так далее. В словаре встречаются не только слова-палиндромы, но и фразы-палиндромы, например: «А роза упала на лапу Азора». Найти и их.
В delphi я на форму нанес memo, в которое загружаю все слова из файла. Также кнопку для поиска палиндромов и edit в котором отображаю результат.
Вот код программы:
А как искать несколько слов или даже несколько фраз?
Имеется большой словарь русских слов. Найти в нем слова-палиндромы («перевертыши»), одинаково читающиеся как слева направо, так и справа налево, например, АННА, ШАЛАШ и так далее. В словаре встречаются не только слова-палиндромы, но и фразы-палиндромы, например: «А роза упала на лапу Азора». Найти и их.
В delphi я на форму нанес memo, в которое загружаю все слова из файла. Также кнопку для поиска палиндромов и edit в котором отображаю результат.
Вот код программы:
Код:
var const dividers=[' ',',','.',';',':','-','=','+'];
...
function Pa(s:string):boolean;
var
i:integer;
fl:boolean;
begin
fl:=true;
for i:=1 to length(s)div 2 do
if s[i]<>s[length(s)-i+1] then
fl:=false;
Result:=fl
end;
...
procedure TForm1.Button1Click(Sender: TObject);
var
s,temp:string;
i:integer;
begin
s:=memo1.Text;
temp:='';
{пробегаем всю строку посимвольно}
for i:=1 to length(s) do
begin
if not (s[i] in dividers) then
temp:=temp+s[i]; {записываем одним словом}
end;
temp:=ansilowercase(temp); {все буквы делаем маленькими}
if Pa(temp)then
edit1.text:=temp; {в edit результат}
end;