Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите решить задачу(строки)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Alexey
Есть задача:
найти максимальное число идущих вподряд пробелов в вводимом тексте

заранее спасибо!!!

киньте если есть готовую задачу или идеи...
Lapp
Идея простая.. Примерно так:

for i:=1 to Length(s) do if s[i]=' ' then begin
Inc(n);
if n>m then Inc(m)
end
else n:=0;
Alexey
Воть...Сам решил. Смотрите кому интересно или тоже нужна...

program probel;
uses crt;
var s,e:string;
Begin
clrscr;
writeln('Введите фразу:');
readln(s);
e:=' ';
while length(e)<255 do insert(' ',e,1);
repeat
if pos(e,s)<>0 then write(length(e)) else delete(e,1,1);
until pos(e,s)<>0;
write('Наибольшее число стоящих рядом пробелов в введённой фразе равно ',length(e));
readkey;
end.



P.S. Защитил на отл.
Lapp
Поздравляю!
То, что сам решил - безусловно хорошо!
Но если разберешься с моим советом - будет еще лучше. Этот код (я сейчас грубо прикинул) работает примерно в 150 раз быстрее твоего..

Добавлено через 8 мин.
Кстати, сейчас только обратил внимание - там у тебя в цикле стоит Write, который в принципе не может отработать. Зачем?..
Да и вообще if в цикле почти не нужен.. Единственная ситуация, где он может пригодиться - это когда все 255 символов - пробелы. Но и ее можно избежать, заменив repeat на while.
18192123
Цитата(Lapp @ 17.03.2007 9:14) *

Идея простая.. Примерно так:

for i:=1 to Length(s) do if s[i]=' ' then begin
Inc(n);
if n>m then Inc(m)
end
else n:=0;


Lapp , объясни пожалуйста, за что у тебя отвечает переменная m?
Tan
Как я понял m это переменная для временного хранения максимального числа последовательности пробелов, с которой впоследствии сравниваются все группы пробелов идущих подряд.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.