Продублировать первое слово - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Дана строка, слова разделены одним пробелом, в конце точка. Продублировать первое слово, если слово максимально длины встречается более 2 раз. В противном случае удалить последнее слово.

Решение задачи: «Продублировать первое слово»

textual
Листинг программы
var
s,buf,max:string;
i:integer;
begin
writeln('Введите строку');
readln(s);
i:=1;
s:=trim(s);
max:='';
buf:='';
for i:=1 to length(s) do
    if (s[i] <> ' ') and (s[i] <> '.') then
       buf:=buf + s[i]
    else
       begin
       if length(buf) > length(max) then
          max:=buf;
       buf:='';
       end;
buf:=s;
delete(buf,pos(max,s),length(max));
i:=length(s) - 1;
if pos(max,buf) > 0 then
   insert(copy(s,1,pos(' ',s)),s,pos(' ',s)+1)
else
   while s[i] <> ' ' do
    begin
    delete(s,i,1);
    dec(i);
    end;
writeln('Итоговая строка: ',s);
end.

Объяснение кода листинга программы

  1. Введите строку.
  2. Переменная s инициализируется введенной пользователем строкой.
  3. Переменная buf инициализируется пустой строкой.
  4. Переменная max инициализируется пустой строкой.
  5. Переменная i инициализируется числом 1.
  6. Строка s очищается от лишних пробелов.
  7. Цикл for начинается. Для каждого символа в строке s...
  8. Если текущий символ не является пробелом и не равен максимальному символу в строке max...
  9. Строка buf увеличивается на текущий символ.
  10. Если длина строки buf превышает длину строки max, то max заменяется на buf.
  11. Строка buf очищается.
  12. Позиция max в строке s проверяется. Если позиция max больше позиции последнего символа в строке s, то...
  13. Строка s очищается.
  14. Цикл while начинается. Пока символ в позиции i в строке s не является пробелом...
  15. Символ в позиции i удаляется из строки s.
  16. Позиция i уменьшается на 1.
  17. Если позиция i меньше 1, то цикл while завершается.
  18. Выводится итоговая строка: ...
  19. Код завершается.

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы