В массиве слов найти пару слов,из которых одно является обращением другого - Pascal ABC
Формулировка задачи:
Напишите программу.
В массиве слов найти пару слов,из которых одно является обращением другого.
Решение задачи: «В массиве слов найти пару слов,из которых одно является обращением другого»
textual
Листинг программы
function revers(s1,s2:string):boolean;
var i:byte;
s:string;
begin
s:='';
for i:=length(s1)downto 1 do
s:=s+s1[i];
revers:=s2=s;
end;
var a:array[1..20] of string;
s1,s2:string;
n,i,j,k:byte;
begin
repeat
write('Введите размер массива от 2 до 20 n=');
readln(n);
until n in [2..20];
writeln('Введите ',n,' слов для поиска пар обращенных');
for i:=1 to n do
readln(a[i]);
k:=0;
i:=1;
while(i<n)and(k=0) do
begin
j:=i+1;
while(j<=n)and(k=0) do
if revers(a[i],a[j])then
begin
k:=1;
s1:=a[i];
s2:=a[j];
end
else j:=j+1;
if k=0 then i:=i+1;
end;
if k=0 then write('Нет пары обращенных слов')
else
begin
writeln('Есть пара обращенных слов, например');
write(s1,'-',s2);
end;
end.
Объяснение кода листинга программы
- Функция
reversпринимает два аргументаs1иs2, которые являются строками. Она использует циклforдля перебора символов строкиs1в обратном порядке и присваивает результат обратно вs2. В конце функция возвращает значениеs2. - Переменная
aобъявляется как массив строк, который будет использоваться для хранения введенных пользователем слов. - Цикл
repeatиспользуется для запроса у пользователя размера массива от 2 до 20. - Затем цикл
repeatиспользуется для запроса у пользователяnслов для поиска пар обращенных. - Переменная
kинициализируется значением 0. - Цикл
whileначинается сi=1и продолжается доiменьше или равноn. Внутри цикла проверяется, равно ли значениеk0. Если это так, то вызывается функцияreversс аргументамиa[i]иa[j], гдеj=i+1. Если функция возвращает значение 1, то переменныеkиs1присваиваются соответствующие значения, аs2присваивается значениеa[j]. Если функция возвращает значение 0, то переменнаяjувеличивается на 1. Если значениеkравно 0, то переменнаяiувеличивается на 1. - Если значение
kравно 0, выводится сообщениеНет пары обращенных слов. В противном случае выводится сообщениеЕсть пара обращенных слов, например, за которым следует вывод значенийs1иs2.