C++.Помогите,пожалуйста.

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Стасек
Сообщения: 15
Зарегистрирован: 23 май 2007, 21:51

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

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

Необходимо найти слова в тексте.
drummer
Сообщения: 61
Зарегистрирован: 13 янв 2008, 18:43

переводишь текст в нижний регистр, потом попорядку ищешь все слова из словаря
Стасек
Сообщения: 15
Зарегистрирован: 23 май 2007, 21:51

Допустим,я перевел текст в нижней регистр.Дальще возникает трудность:как осуществить поиск,не обращая внимание на пробелы,точки,запятые.
А также в конце строки изменять индекс и указатель на новую строку,если есть совпадения в конце предыдущей.
drummer
Сообщения: 61
Зарегистрирован: 13 янв 2008, 18:43

Можно все в один одномерный массив заталкать
или просто добавить пару проверок
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Создаем строку. Идем по тексту: если очередной символ - буква, записываем ее в строку. Так наращиваем строку до размера, скажем, 250 символов. Потом ищем в строке слова из словаря (функция Pos). Если текст еще не закончился - обрезаем строку, скажем, до 10 последних символов и опять наращиваем
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Стасек
Сообщения: 15
Зарегистрирован: 23 май 2007, 21:51

Допустим,нашли мы искомые слова,но их надо как-то выделить в тексте,другим цветом например,и я не вижу спасоба,как это можно сделать,если воспользоваться предложенным методом...
drummer
Сообщения: 61
Зарегистрирован: 13 янв 2008, 18:43

Создаешь еще один массив(например, а). Потом когда загоняешь буквы в одну строку в массив а записываешь номер буквы в тексте
Стасек
Сообщения: 15
Зарегистрирован: 23 май 2007, 21:51

drummer писал(а):Создаешь еще один массив(например, а). Потом когда загоняешь буквы в одну строку в массив а записываешь номер буквы в тексте
А есть другой вариант? Потому что я плохо понимаю,как можно загнать буквы в одну строку,найти в ней нужное слово,и потом еще и занести в массив А индекс этой буквы в тексте...
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Собрать буквы в строку - RTFM
Нахождение слова в строке - есть специальная функция (в Си вроде бы strstr) - RTFM
Добавление числа в массив - RTFM
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Стасек
Сообщения: 15
Зарегистрирован: 23 май 2007, 21:51

Как собрать в строку буквы,найти слово и добавить числа в массив я понимаю.Мне не понятно другое.Добавили мы в строку буквы,в массив А добавили ее номер.В строке мы нашли искомое слово.А как дальше связать индексы нужных букв из строки и их индексы в тексте?
Ответить