![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
Subaru |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
есть строка :'I I I LIVE IN THIS THIS WORLD'
надо чтоб она удалила не-нужные слова (чтоб вышло 'I LIVE IN THIS WORLD') я не понемаю как проверить есть ли там два одинакового слова один за одним... ![]() помогите... ![]() -------------------- What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!! |
APAL |
![]()
Сообщение
#2
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Раздели строку на слова, а потом как в массиве - сравнивай соседние элементы.
-------------------- |
FreeMan |
![]()
Сообщение
#3
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
Подсказка: чтоб разделять на слова надо искать пробелы
![]() -------------------- бб
|
Subaru |
![]()
Сообщение
#4
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
![]() ![]() -------------------- What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!! |
APAL |
![]()
Сообщение
#5
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Что именно не понял?
Кстати, вопрос о разделении строки на слова уже встречался на нашем форуме. Но я предлагаю вместе решить это заново. P.S.: Для "не авторов" топика - не спешите выкладывать сразу готовое решение. Давайте человека попытаемся "научить", а не пользоваться "халявой"... ИМХО. Сообщение отредактировано: APAL - 2.11.2004 18:46 -------------------- |
Subaru |
![]()
Сообщение
#6
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
я не понял как Разделить строку на слова..
это типа первое слово внести и потом enter нажать чтоб второе написать и т.д ? или как ? Сообщение отредактировано: Subaru - 2.11.2004 19:03 -------------------- What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!! |
Guest |
![]()
Сообщение
#7
|
Гость ![]() |
Нет. Строка (по условию) у тебя уже задана. Тебе ее надо програмно обработать, т.е. разобрать по словам.
Например завести массив, наподобие m : array[1..20] of String[10] Занести в него слова, а потом и сравнивать элементы массива. P.S.: Массив на слова - это конечно не оптимально - но зато более наглядно и понятно. |
APAL |
![]()
Сообщение
#8
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Какой-то глюк. Предыдущее сообщение - мое.
-------------------- |
P@sh@ |
![]()
Сообщение
#9
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: ![]() ![]() ![]() |
а не проще ли безо всяких массивов просто запоминать последнее встреченное слово и сравнивать его с текущим при сканировании строки?
|
APAL |
![]()
Сообщение
#10
|
![]() Смотрю... ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 055 Пол: Мужской Реальное имя: Пшеничный Алексей Анатольевич Репутация: ![]() ![]() ![]() |
Я же говорил:
Цитата P.S.: Массив на слова - это конечно не оптимально - но зато более наглядно и понятно. -------------------- |
Subaru |
![]()
Сообщение
#11
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
спасибо что всем помогаите но только мне нет..
![]() ![]() ладно.. буду знать что тут только мне не помогают и больше не приду спрашивать.. большое спасибо ! ![]() ![]() ![]() -------------------- What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!! |
Digitalator |
![]()
Сообщение
#12
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
Тебе сказали все что требуется, для того чтобы написать программу к задаче.
От тебя требуются только начальные знания языка! Если что-то не понятно, задавай конкретные вопросы, а не типа "а как сделать?". -------------------- |
Subaru |
![]()
Сообщение
#13
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Подойдет ли такое решение этой задачи:
Код Program I_Live; Const s: String = 'I I I live in this this world world'; Var iNext, iPrev: Byte; sNext, sPrev: String; one_more: Boolean; Begin s := s + ' '; one_more := True; iPrev := Pos(' ', s); sPrev := Copy(s, 1, Pred(iPrev)); While one_more Do Begin Repeat iNext := Pos(' ', Copy(s, Succ(iPrev), Length(s) - iPrev)) + iPrev; one_more := (iNext <> iPrev); If not one_more Then Break; sNext := Copy(s, Succ(iPrev), Pred(iNext - iPrev)); If sPrev = sNext Then delete(s, iPrev, iNext - iPrev) Until sNext <> sPrev; sPrev := sNext; iPrev := iNext End; s[0] := Chr(Pred(Length(s))); WriteLn( 's = ', s ); End. или ее нужно делать как-нибудь по-другому ? Сообщение отредактировано: Subaru - 3.11.2004 23:50 -------------------- What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!! |
Digitalator |
![]()
Сообщение
#14
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
эта прога неправильно работает, когда одинаковы два последних слова, например "I live in this world world"
Исправь ошибку и будет ок. -------------------- |
Subaru |
![]()
Сообщение
#15
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Исправил... А теперь ?
-------------------- What Can I Say ? I'm Just a Car !
Need pascal help ? Go to Volvo !!! |
Altair |
![]()
Сообщение
#16
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Цитата эта прога неправильно работает, когда одинаковы два последних слова, например "I live in this world world" эээ... тот код, что представлен выше работает... Или Subaru его отредактировал? Замечание: Можно программу еще модернизировать. В условии не сказанно, что слова разделяются одним пробелом. Если в строке между словами встретится 2 и более пробелов, то не все лишние слова удалятся. Это желательно исправить... что бы не исправлять основной алгоритм, можно перед удалением лишних слов, удалить лишние пробелы... И еще желательно слелать программу более универсальной - вместо константы строки, лучше вводить ее во время работы программы. Тогда ее можнобудет скомпилировать в загрузочный модуль (EXE) и использовать как полнофункциональную программу. (кстати такая программа может пригодится при удалении лишних строк из файла.) Замечание 2 Паскали разные бывают .... ![]() такая строка: Код s[0] := Chr(Pred(Length(s))); Будет ошибкой при компилировании в FPC (free pascal) ЗЫ: мое первое сообщение тоже было про строки ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 14:21 |