Напечатать те слова последовательности, которые отличны от первого слова - PascalABC.NET
Формулировка задачи:
Дана последовательность, содержащая от 2 до 50 слов, в каждом из которых от 1 до 8 строчных латинских букв; между соседними словами - не менее одного пробела, за последним словом - точка. Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству:
слово симметрично (например: авва).
Решение задачи: «Напечатать те слова последовательности, которые отличны от первого слова»
textual
Листинг программы
uses crt;
function Simm(s:string):boolean;
var s1:string;
i:byte;
begin
s1:='';
for i:=length(s) downto 1 do
s1:=s1+s[i];
if s1=s then Simm:=true
else Simm:=false;
end;
var t,t1,t2:string;
i,n:integer;
begin
clrscr;
writeln('Введите текст из слов, разделенных пробелом:');
readln(t);
t:=t+' ';
t1:=copy(t,1,pos(' ',t)-1);
delete(t,1,pos(' ',t));
while (pos(' ',t)>0) do
begin
t2:=copy(t,1,pos(' ',t)-1);
if (t2<>t1) and Simm(t2) and (pos(' ',t)<=8) then
write(t2,' ');
delete(t,1,pos(' ',t));
for i:=1 to n do begin
delete(t,51*n,pos(' ',t));
end;
end;
readln
end.
Объяснение кода листинга программы
- Программа использует функцию
Simm, которая принимает строкуsи возвращаетtrue, если строка является палиндромом, иfalseв противном случае. - В функции
Simmсоздается строкаs1, которая в цикле заполняется обратным порядком символов строкиs. - Если
s1равнаs, то функция возвращаетtrue, иначеfalse. - В основной программе создаются строки
t,t1иt2, а также переменныеiиn. - Пользователю предлагается ввести текст из слов, разделенных пробелом.
- Введенный текст сохраняется в переменной
t. - Строка
t1формируется путем удаления пробелов из начала строкиt. - Цикл выполняется до тех пор, пока в строке
tесть пробелы. - В каждой итерации цикла формируется строка
t2путем удаления пробелов из начала строкиt. - Если
t2не равноt1и функцияSimmвозвращаетtrue, то словоt2выводится на экран. - После каждой итерации цикла из строки
tудаляются последние 51 символа (предполагая, что каждое слово занимает не более 8 символов). - Переменная
nинициализируется значением 51*i, гдеi- это номер итерации цикла. - В конце программы программа ожидает ввода пользователя, прежде чем завершиться.