Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2008, 00:26   #1
Стасек
 
Регистрация: 16.01.2008
Сообщений: 7
По умолчанию C++.Задачка непростая!

Попробывал 2-3 алгоритма поиска,и все забраковали...Помогите пожалуйста с написанием процедурой поиска или с написанием алгоритма.Есть два файла:текст и словарь,где несколько слов.
Например,дан текс:Вот,наконец-то, над леСОМ взошла ЛУНА – одноглазый светоФОР. ЕЛЬник, кажется, залит таинственным сиянием, уПАЛ ТУСклый свет на поле.

В другом файле (словаре) слова близкие по тематике:Сом,Луна,Форель,Палтус.

Необходимо найти слова в тексте и выделить их цветом.
Стасек вне форума Ответить с цитированием
Старый 16.01.2008, 00:45   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

алгоритм цифрового поиска наверно пойдет. загружаешь слова из файла словаря и формируешь на их основе дерево. потом быстренько по буквам пробегаешь и ищешь в дереве слово, если нашли, значит выделяем
pu4koff вне форума Ответить с цитированием
Старый 16.01.2008, 01:09   #3
Стасек
 
Регистрация: 16.01.2008
Сообщений: 7
По умолчанию

Я уже пытался воспользоваться "деревом",но попытка была отвергнута как "не подходящая для этой задачи".А также я пытался воспользоваться алгоритмом поиска Бойера-Мура и тоже мне указали на неправильность этого подхода...
Стасек вне форума Ответить с цитированием
Старый 16.01.2008, 07:01   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Удалите из текста все разделители и ищите нужную подстроку.

Последний раз редактировалось puporev; 16.01.2008 в 07:05.
puporev вне форума Ответить с цитированием
Старый 16.01.2008, 10:36   #5
Стасек
 
Регистрация: 16.01.2008
Сообщений: 7
По умолчанию

Хорошо,а удалив все ограничители,как после этого выделить цвемтом найденные слова?
Стасек вне форума Ответить с цитированием
Старый 16.01.2008, 11:46   #6
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Я Си не знаю, поэтому объясню на словах. Просматриваем строку с конца до начала и пока позиция первого знака искомой подстроки >0 менять цвет символов с этой позиции до конца подстроки.
В Паскале это так:
for i:=1 to lendgth(s) do
while pos('сом',s) do
begin
for j:=pos('сом',s) to lendgth('сом') do
менять цвет символов
end;
puporev вне форума Ответить с цитированием
Старый 16.01.2008, 11:54   #7
Стасек
 
Регистрация: 16.01.2008
Сообщений: 7
По умолчанию

ведь таким способом можно выделить только символы в строке,а в программе надо вывести искомый текст с найденными словами,которые выделены другим цветом.
Стасек вне форума Ответить с цитированием
Старый 16.01.2008, 12:03   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Извините, недопонял. Если бы не пробелы, то все бы работало, а так надо думать, как решить проблему пробелов.
puporev вне форума Ответить с цитированием
Старый 16.01.2008, 17:35   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

не знаю чесна говоря почему были отвергнуты "деревянные" алгоритмы... Просто при поиске проверять, что если это разделитель (пробел,\n,\t,...), то пропускаем его и проверяем следующий символ
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вот это задачка!!! Лёха Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 10:54
Задачка для ума 3 ZORRO2005 Microsoft Office Excel 14 23.04.2008 12:35
Очень непростая схема vitalik007 Общие вопросы Delphi 3 21.01.2008 22:11