![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Вагон |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Дана строка длиной N символов. Справа строка ограничена пробелом.
Проверить наличие двух одинаковых слов. Как я понимаю, между словами пробелов нет. не пойму, как решать |
![]() ![]() |
Malice |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
Вагон |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
А что есть? Слова как друг от друга отделять, по словарю ? ![]() Скорее всего слова через пробел и в этом случае поиск по сайту даст тебе ответ. Почему бы и нет? А если под словом имеется ввиду последовательность одинакових символов |
Michael_Rybak |
![]()
Сообщение
#4
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Если "последовательность одинакових символов", то просто проверить, что все буквы - разные. Любые две одинаковые буквы удовлетворяют такому определению. А вот если два наибольших одинаковых слова - это куда сложнее. И рассказывать долго. А если словарь дан - то вообще третья задача.
|
Вагон |
![]()
Сообщение
#5
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Если "последовательность одинакових символов", то просто проверить, что все буквы - разные. Любые две одинаковые буквы удовлетворяют такому определению. А вот если два наибольших одинаковых слова - это куда сложнее. И рассказывать долго. А если словарь дан - то вообще третья задача. Например-"абракадабра" имеется два одинаковых слова "ра" |
Lapp |
![]()
Сообщение
#6
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Например-"абракадабра" имеется два одинаковых слова "ра" Вагон, читай внимательнее. При точной реализации твоих слов Цитата А если под словом имеется ввиду последовательность одинакових символов любая повторяющаяся буква даст тебе положительный результат (последовательность длины 1). Michael_Rybak предложил дополнить твою формулировку словами "максимальной длины". Если так, то в слове "абракадабра" таковой является "абра", а не "ра". Но тратить время на задачу с неопределенными условиями не очень хочется. Тебя не слишком затруднит уточнить формулировку? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Malice |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Например-"абракадабра" имеется два одинаковых слова "ра" И не только, их там полно. А вообще если так вопрос поставлен, то надо делать перебор, что-то типа этого: Код ... for x:=2 to n div 2 do for i:=1 to n div 2 do for j:=i+x to n-x+1 do if copy(s,i,x)=copy(s,j,x) then ... |
Michael_Rybak |
![]()
Сообщение
#8
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Не-а. Перебор делать не надо, потому что существует множество замечательных быстрых алгоритмов для строк. Например, поиск подстроки длины X внутри строки длины Y можно осуществить за O(X+Y), а не за O(XY), как это делает, например, функция Pos в Паскале. Вообще, практически все что угодно со строками можно сделать за n log n. Но сделать это сложнее всего, когда нет постановки задачи
![]() |
Вагон |
![]()
Сообщение
#9
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
выяснил, что слова разделены пробелами. Но как организовать поиск одинаковых слов, ума не приложу. Поиск ничего не дал. Поможите!!!
![]() |
мисс_граффити |
![]()
Сообщение
#10
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
самый простой вариант:
считываешь первое слово. удаляешь его. если pos вернет не ноль - значит, это слово есть еще. кстати, а что делать со словами, которые встречаются три, четыре, пять, двадцать раз? -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
Вагон |
![]()
Сообщение
#11
|
Группа: Пользователи Сообщений: 5 Пол: Мужской Репутация: ![]() ![]() ![]() |
Неужели никто не может проверить строку из 90 символов, ограниченную справа пробелом
на наличие двух одинаковых слов??? ![]() |
Michael_Rybak |
![]()
Сообщение
#12
|
Michael_Rybak ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 046 Пол: Мужской Реальное имя: Michael_Rybak Репутация: ![]() ![]() ![]() |
Ты написал:
Цитата не пойму, как решать Тебе ответили (когда, наконец, добились формулировки): Цитата считываешь первое слово. удаляешь его. если pos вернет не ноль - значит, это слово есть еще. Ты, игнорируя это (ни "спасибо", ни "не понял", ни "и как это сделать") пишешь: Цитата Неужели никто не может Что из этого следует? Ничего хорошего. |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 9:25 |