![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
kost85 |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравсвуйте.
Есть такая задача. Вводится строка. Требуется в ней перебрать все слова и проверить их на что-то. Другими словами вычленить слова из строки. Сначала забивал все слова из строчки в (array [1..n] of string) - все было отлично. Теперь препод хочет что бы я забивал каждое слово в другую строку и проверял ее. Вот не пойму, как сразу в цикле перебора строки получать слово , записывать его в перем. типа string , затем проверять(ну это все под контр-ем), а затем сбрасывать и снова записывать очередное слово... Может кто сталкивался. Заранее огромное спасибо. |
![]() ![]() |
Алена |
![]()
Сообщение
#2
|
Гость ![]() |
Ты бы вот тут посмотрел: Разбиение на слова. Все способы. (особенно завершающий способ)
|
T i m e |
![]()
Сообщение
#3
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: ![]() ![]() ![]() |
Какая разница? Всё точно также делается, только очередное слово в тексте записывается не в массив, а в какую то переменную. После этого проверяем слово "на что-то"... И всё. Далее при повторе цикла, в нашу перемнную запишется другое полученное из текста слово и т.д. Просто мы сразу будем делать непосредственно проверку при получение каждого слова, а не работать после с массивом.
-------------------- Time have not meaning. Mind - this is main...
|
kost85 |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
в результате если исх строка состоит из 2 слов - то он в word записывает эти два слова - и соответственно проверка не идет.... |
Артемий |
![]()
Сообщение
#5
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Вот тебе цикл разбиения и записи в переменную...Надеюсь ты это имел ввиду!
var Добавлено через 1 мин. (может способ немного "насилованный" ![]() -------------------- Dum spiro spero!
|
kost85 |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 3 Пол: Мужской Репутация: ![]() ![]() ![]() |
To Time: Не пойму в какой кусок цикла проверку делать. Вот в этом коде он в word пишет столько слов, сколько было в предложении... |
T i m e |
![]()
Сообщение
#7
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот примерно так это должно выглядить (один из вариантов):
Код var S,word:string; i,j: integer; begin clrscr; write('Sentence>> : '); readln(S); repeat repeat if s[1] = ' ' then delete(s,1,1); until s[1] <> ' '; if s <> '' then if pos(' ',s) > 0 then word := copy(s,1,pos(' ',s)-1) else word := s; {вот мы получили наше слово и далее здесь же можем делать с ним чё хочешь, любые условия ставить и т.д} {При повторение цикла на этом этапе мы будем получать очередное слово в предложение} until S = ''; end; Ну, если у тебя предложение со знаками припинания, то этот факт тоже учитывать надо будет... -------------------- Time have not meaning. Mind - this is main...
|
Артемий |
![]()
Сообщение
#8
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Цитата(kost85) Теперь препод хочет что бы я забивал каждое слово в другую строку и проверял ее. Вот не пойму, как сразу в цикле перебора строки получать слово , записывать его в перем. типа string , затем проверять(ну это все под контр-ем), а затем сбрасывать и снова записывать очередное слово... Давай посмотрим что у тебя.. Ты используешь алгоритм repeat .. until. Теперь посмотри, что у тебя получилось: var S,word:string; Раз взялся драть s так и делай: var S,word:string; -------------------- Dum spiro spero!
|
T i m e |
![]()
Сообщение
#9
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата if s[1] = ' ' then delete(s,1,1);{<<---Зачем? Ведь ты не чистил строку!} Это удаление впереди стоящих пробелов. Цитата if pos(' ',s) > 0 then word := copy(s,1,pos(' ',s)-1) {<<---Допустим..Но получается бесконечный цикл, ведь строка не отчищается!Он берет ближайший пробел!} else word := s; {<<---И тут тоже..Досюда в твоем и не дойдет..} Извините, ошибся просто... конечно там ещё в этом месте надо удалять очередное слово: delete(s,1,pos(' ',s)) Просто быстро писал... не заметил... Цитата if s <> '' then begin Ну тогда и это здесь уже не нужно проверять. ![]() Он никогда ведь не пойдёт в это условие с пустой строкой... Сообщение отредактировано: T i m e - 1.03.2007 20:15 -------------------- Time have not meaning. Mind - this is main...
|
Артемий |
![]()
Сообщение
#10
|
![]() Помощник капитана ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 601 Пол: Мужской Реальное имя: Артем Репутация: ![]() ![]() ![]() |
Да и зачем лишнии переменные Integer...
![]() -------------------- Dum spiro spero!
|
T i m e |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата Да и зачем лишнии переменные Integer... ![]() ![]() Это у меня просто от другой программы наверно скопировалось просто... Конечно никаких i и j не надо здесь! ![]() -------------------- Time have not meaning. Mind - this is main...
|
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
Для этого и существует:
Цитата(Правила Раздела) 7. Проверяйте программы перед тем, как разместить их на форуме!!! ... Здесь Форум, а не Формула 1, чтобы "быстро печатать"... "Поспешишь - людей насмешишь" (С), что и произошло... |
T i m e |
![]()
Сообщение
#13
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 27 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата "Поспешишь - людей насмешишь" (С), что и произошло... Никто никого не смешил вроде... ![]() ![]() -------------------- Time have not meaning. Mind - this is main...
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 18:17 |