Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Написание словоря. Хочу написать программу-словарь.  
:(
    Опции темы
LostLev
Дата 11.3.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.12.2008

Репутация: нет
Всего: нет



Здравствуйте!
Возникла надобность написать программу-толковый словарь. то есть вводишь ей слово, она выводит его лексическое значение. Лексическое значение она берёт из словаря Даля, который лежит у меня на РБ введи тхт.
Ну и, собственно, вопрос:
Как это сделать? код целеньком можно не выкладывать(хотя можно и выложить или кинуть на мыло), лучше дать основные направления работы, ну или каркас кода.
Работаю(ну да смешно) я на Microsoft Visual Studio 2008, русская версия язык, понятно C++.
К сообщению прикреплён кусок того самого словаря, это вроде важно.
Заранее спасибо за ответы, извиняюсь если повтор.
[email protected]

Присоединённый файл ( Кол-во скачиваний: 26 )
Присоединённый файл  ______.txt 6,29 Kb
PM MAIL   Вверх
Dmi3ev
Дата 12.3.2009, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1698
Регистрация: 28.11.2007

Репутация: 13
Всего: 41



я не уловил структуру файла... честно признаюсь... там и какие-то поговорки...


--------------------

PM MAIL   Вверх
chaos
Дата 12.3.2009, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



ну самое первое что приходит в голову 

Код

class index_t {};
typedef std::map<std::string, index_t> dictionary_t;


те ключом словаря является словов(регистр не учитывается), а значением по ключу будет .....эм нечто индекса по которому можно будет найти толкование в файле
PM WWW   Вверх
azesmcar
Дата 12.3.2009, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

те ключом словаря является словов(регистр не учитывается), а значением по ключу будет .....эм нечто индекса по которому можно будет найти толкование в файле


жестко, весь словарь Даля в память подгружать smile даже если только индексы и слова..тоже не мало...

Это сообщение отредактировал(а) azesmcar - 12.3.2009, 08:43
PM   Вверх
Lazin
Дата 12.3.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



БД
PM MAIL Skype GTalk   Вверх
mrbrooks
Дата 12.3.2009, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Однозначно БД и на этот счет не может быть двух мнений.

Добавлено через 1 минуту и 7 секунд
Цитата(chaos @  12.3.2009,  07:56 Найти цитируемый пост)
ну самое первое что приходит в голову 

я прикидываю как это будет быстро, при работе со всей информации из словаря Даля  smile 
PM MAIL   Вверх
chaos
Дата 12.3.2009, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



azesmcar, Lazin, mrbrooks
мда smile действительно, чото я "дал гари" в плане использования мапы smile


PM WWW   Вверх
azesmcar
Дата 12.3.2009, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

Однозначно БД и на этот счет не может быть двух мнений.


согласен, но думаю что под термином БД не обязательно подразумевать именно какую нибудь СУБД. Чтоб не таскать с программой драйверы и саму СУБД в целом можно написать свою, специально оптимизированную примитивную базу данных. Например написать утилиту индексирующую файл, данные хранить отсортированными. При поиске просто искать по индексам. Можно например создать файл который будет хранить первую букву слова и смещение начала всех слов в основном БД. Посмотреть первую букву искомого слова и уже бинарным поиском искать в файле. Процесс поиска будет намного быстрее. А индекс можно и загрузить в память.


Пример:

Индексная таблица
Код

А => 0
Б => 1500
В => 3750
Г => 5000
...
Я => 97570


Файл
Код

1. американец - житель Америки
2. американка - тип бильярдной игры
3. болгарин - житель Болгарии
4. болгарка - электрическая пила
5. москвичка - жительница Москвы
6. москвич - ведро с гайками


ищем слово москвич - находим в индексной таблице М - начинаем искать в файле, начиная с 5 по 6 строку бинарным поиском.

Это сообщение отредактировал(а) azesmcar - 12.3.2009, 13:06
PM   Вверх
mrbrooks
Дата 12.3.2009, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



azesmcar, ну тут - грубо говоря - уже дело выбора разработчика.  smile 
Я бы - честно говоря не замарачивался - и заюзал бы тот же SQLite или что нибудь из этой оперы.

Это сообщение отредактировал(а) mrbrooks - 12.3.2009, 13:20
PM MAIL   Вверх
azesmcar
Дата 12.3.2009, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата

azesmcar, ну тут - грубо говоря - уже дело выбора разработчика.  smile 


 smile я как вариант предложил

Цитата

Я бы - честно говоря не заморачивался - и заюзал бы тот же SQLite или что нибудь из этой оперы.


тоже вариант, я правда не использовал, не знаю как он себя будет вести если в базе свыше миллиона строк.

Добавлено через 4 минуты и 9 секунд
Цитата

тоже вариант, я правда не использовал, не знаю как он себя будет вести если в базе свыше миллиона строк. 


хотя думаю нормально, ту же оптимизацию можно в любой СУБД сделать, главное чтобы СУБД не сдохла от большого количества записей..но думаю не сдохнет smile не так уж все и страшно.
PM   Вверх
mrbrooks
Дата 12.3.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 19
Всего: 306



Цитата(azesmcar @  12.3.2009,  13:21 Найти цитируемый пост)
тоже вариант, я правда не использовал, не знаю как он себя будет вести если в базе свыше миллиона строк. 

Судя по отзывом, должна шустрить быстрее мускула. Тем более если автор возьмется использовать SQLite - заодно и узнаем - как оно - при превышении миллиона строк  smile 
PM MAIL   Вверх
Anikmar
Дата 12.3.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 5
Всего: 59



ИМХО
Разрабатывать свою СУБД дело дохлое - так как проект достаточно серьезный, даже с точки зрения наполнения данной БД.

Так что надо брать готовое решение.

Вопрос риторический: а оно надо? В конце концов есть википедия.
PM MAIL ICQ   Вверх
LostLev
Дата 12.3.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 13.12.2008

Репутация: нет
Всего: нет



Дело в том, что словарь это первая часть проекта, причём не маленького. Самим словарём пользоваться никто не будет, но на его основе будет писаться весь последующий код, так что написан он должен быть, во-первых, толково, во-вторых, только на С++, причём с использованием стандартных библиотек(а желательно только MFC). Скорость работы не очень важно, главное чтоб не висло. Вообще желательно сделать что-то вроде Explanatory(http://maerdtfos.narod.ru), а ещё лучше нарыть ейные исходники...
Главная проблема, по прежнему работа со словарём Даля.
P.S
Спасибо огромное за столь активное участие, неожидал))
PM MAIL   Вверх
Lazin
Дата 12.3.2009, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



можно посмотреть исходники stardict
PM MAIL Skype GTalk   Вверх
bsa
Дата 12.3.2009, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



LostLev, на счет MFC ты зря. Она умирает... Может стоит что-то более современное и удобное использовать?
А по поводу словаря, для начала я бы изучил готовые открытые словари (например, stardict) и, при возможности, использовал их. Думаю, все словари делают индекс слов (слово - позиция в файле с описанием) - для миллиона слов индекс будет порядка пары десятка мегабайт. Если еще этот индекс не держать в ОЗУ, а хранить в файле в отсортированном виде + индекс первых букв, а при поиске использовать метод деления пополам, то скорость будет довольно высокая. ИМХО.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0638 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.