Дана строка символов. Группы символов, разделенные одним или несколькими пробелами и не содержащие пробелов внутри себя, будем называть словами. В самом длинном слове заменить все буквы «a» на «b».
Проблема данного алгоритма в том, что длина последнего слова, если после него нет пробела, не сравнивается с max. Поэтому за пределами цикла пишем отдельную инструкцию if. Чтобы этого избежать, можно поменять местами тела if и else в цикле (а также условие при if на равенство с пробелом). Но тут возникают другие проблемы, связанные с концом строки.
var s: string; i, id, len, max, count: byte; begin readln(s); len := length(s); max := 0; id := 0; count := 0; for i:=1 to len do if s[i] ' ' then count := count + 1 else begin if count > max then begin max := count; id := i - count; end; count := 0 end; if count > max then begin // for last word max := count; id := i - count; end; for i:=id to id+max do if s[i] = 'a' then s[i] := 'b'; writeln(s); end.
Пример выполнения программы:
That abstract data too parameters That abstract data too pbrbmeters
Комментарии
Можно и так
Для замены "а" на "б".