IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Помогите решить задачу(строки), Найти пробелы
Alexey
сообщение 17.03.2007 8:27
Сообщение #1


Гость






Есть задача:
найти максимальное число идущих вподряд пробелов в вводимом тексте

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

киньте если есть готовую задачу или идеи...
 К началу страницы 
+ Ответить 
Lapp
сообщение 17.03.2007 9:14
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Alexey
сообщение 23.03.2007 3:31
Сообщение #3


Гость






Воть...Сам решил. Смотрите кому интересно или тоже нужна...

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
сообщение 23.03.2007 5:06
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


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

Добавлено через 8 мин.
Кстати, сейчас только обратил внимание - там у тебя в цикле стоит Write, который в принципе не может отработать. Зачем?..
Да и вообще if в цикле почти не нужен.. Единственная ситуация, где он может пригодиться - это когда все 255 символов - пробелы. Но и ее можно избежать, заменив repeat на while.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 23.03.2007 21:41
Сообщение #5


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(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?

Сообщение отредактировано: 18192123 - 23.03.2007 21:42
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Tan
сообщение 23.03.2007 22:13
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 559
Пол: Мужской
Реальное имя: Бруно

Репутация: -  10  +


Как я понял m это переменная для временного хранения максимального числа последовательности пробелов, с которой впоследствии сравниваются все группы пробелов идущих подряд.

Сообщение отредактировано: Tan - 23.03.2007 22:17


--------------------
Цитата
Imagination is more important than knowledge.
Albert Einstein
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"