![]() |
|
Модераторы: Poseidon |
![]()
|
|
| Sibi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Уважаемые программисты. Дали нам в институте такое задание, как указано в теме. Лабораторных ни одной не было. Поэтому я в панике. Прошла начальный курс С++, но ума не приложу как это написать.
Требования такие: 1) Не должно быть ни одного вопроса, который бот оставил бы без ответа. 2)бот не должен ругаться 3)бот сам должен здороваться и задавать вопросы 4) бот должен поддержать беседу на 3 темы (любых). Может, кто-нибудь сталкивался с таким, я могу изменить готовую прога или дописать. Главное понять принцип написания. Помогите, пожалуйста!!! |
|||
|
||||
| neic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 839 Регистрация: 28.1.2007 Репутация: 5 Всего: 7 |
1) Запихнуть последний заданый вопрос в глобальную переменную (ну или каким-то макаром запомнить)
2) Ну если ты не научишь бота ругаться, то он и не будет 3) При запуске выдавать приветствие. Ждать пока собесеседник ответит и смотреть в глобальную переменную на последний заданный вопрос, там будет пусто, значит задаём любой вопрос. 4) Предусмотреть сценарии разговора. С чего нужно начать: Нужно определить, как бот будет обрабатывать сообщение посланные собеседником (кстати как будут предаваться сообщения? На локальном компе или через какой-то проткол?). Лично я вижу такую реализацию: При посылке сообщения собеседником, смотреть сначала 100% совпадающее слово (фразу), а если это слово (фраза) не найдена, то резать сообщение на слова (союзы и предлоги наверное нужно будет выкидывать) и фразу, которая больше всего содержит эти слова, нужно будет выбрать. Также нужно будет предусмотреть синонимы. Я лишь описал ход моих мыслей, C не знаю так что с кодингом не могу помочь. П.с. естественно нужно хранить базу со словами (фразами), а также синонимы (или похожие фразы) |
|||
|
||||
| Sibi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Спасибо. Сообщения будут просто вводиться на экране запущенного exe-файла. А как нужно проверять совпадения слов? И как в программе предусмотреть базу?
|
|||
|
||||
| neic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 839 Регистрация: 28.1.2007 Репутация: 5 Всего: 7 |
Ну тут есть 3 варианта: 1) Вшить ответы в программу 2) Создать текстовой файл 3) Создать БД (SQL) Из всего перечисленного 2ой пункт наверное самое оптимальное. |
|||
|
||||
| Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 5 Всего: 41 |
Да именно так, советую юзать БД, удобнее будет, мне кажется... И начать с того, что создать пустую БД, где будет грубо говоря два поля вопрос и ответ на него Если ты при запуске проги вводишь вопрос, а не на него нет ответа, то предложить пользователю ввести ответ на него, так твоя программа будет самообучаться, в следующий раз на этот вопрос она уже ответит... такая реализация тупая, но, думаю, для того чтобы сдать в инсте хватит и этого... Можно и с файлом, структуру создать:
а потом читать из файла ее в вектор (или еще куда), и записывать в файл, если такой пары вопрос ответ еще нет... сам выбирай, я бы БД взял... neicу файл по душе... это уже дело твое... -------------------- |
||||
|
|||||
| Sibi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Спасибо. Я не знаю как БД подключать, поэтому создам файл. А вот в проге написать, чтобы она осуществлял поиск по словам в файле? Подскажите, пожалуйста.
|
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 16 Всего: 69 |
||||
|
||||
| neic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 839 Регистрация: 28.1.2007 Репутация: 5 Всего: 7 |
Dmi3ev, у меня было 2 критерия выбора в пользу текстового файла:
1) легкость в освоении (не нужно знать про БД) 2) лёгкая расширяемость за счёт других пользователей, т.е. я захотел создал одну базу объединил эту базу с базой другого чела и т.д. |
|||
|
||||
| neic |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 839 Регистрация: 28.1.2007 Репутация: 5 Всего: 7 |
Sibi, можно просто в файле сделать так
Например: Это ты?::Да, это я. :: - разделитель |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 5 Всего: 41 |
neic, у меня никаких возражений... -------------------- |
|||
|
||||
| Dmi3ev |
|
||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 5 Всего: 41 |
+ еще хочу поговорить про реализацию.
Так вот, файл так файл, тогда бери *.ini файл, а для разработки бери C++ Builder, потому как при использовании такой связки можно быть полным нубом в программировании... А задание выполнишь за 10 секунд, не больше... Удобно! 1) Создаешь проект, кидаешь на форму два эдита и кнопку (5 секунд думаю хватит) 2) В событие OnClick кнопки пишешь следующий код (Думаю секунды 3 хватит чтобы это сделать):
Все готово! Остается еще 2 секунды до того, как пройдет 10 секунды с создания проекта, они нужны чтобы вставить вот этот хидер:
Ах да, сам файл myDB.ini должен выглядеть так:
Проще некуда... Добавлено через 1 минуту и 43 секунды В случае, если вопрос не найден будет выдаваться фраза по умолчанию
-------------------- |
||||||||
|
|||||||||
| Sibi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
neic, спасибо! Попробую.
Добавлено через 4 минуты и 40 секунд Dmi3ev, ух ты, спасибо! Я правда C++ Builder никогда не пользовалась, но надо начинать. |
|||
|
||||
| Dmi3ev |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 5 Всего: 41 |
Для тебя в данном случае C++ Builder лучший выход, потому как разобраться в двух строках проще, чем в тоннах кода... Тем более, что их надо еще родить Единственное, можно продумать о добавлении новой пары вопрос-ответ в файл (это не сложно, а можно и ручками дописывать, структуру файла я тебе показал, по аналогии думаю сможешь написать вопросов и ответов сколько тебе надо) и + еще можно добавить 1 строку, так будет более правильно:
Удачи... -------------------- |
||||
|
|||||
| Sibi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 5.5.2009 Репутация: нет Всего: нет |
Dmi3ev, помоги еще раз, пожалуйста. Програмка работает, но не читает из файла вопросы, на любой отвечает "не знаю". Что делать?
|
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 5 Всего: 41 |
Sibi, как не читает?
Добавлено через 33 секунды у меня этот код работает на ура, покажи свой... че ты без кода просишь че-то -------------------- |
|||
|
||||
![]()
|
| Правила форума "Центр помощи" | |
|
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Центр помощи | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |