| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [C/С++] Программа "Робот для общения" |
| Автор: Sibi 5.5.2009, 17:55 |
| Уважаемые программисты. Дали нам в институте такое задание, как указано в теме. Лабораторных ни одной не было. Поэтому я в панике. Прошла начальный курс С++, но ума не приложу как это написать. Требования такие: 1) Не должно быть ни одного вопроса, который бот оставил бы без ответа. 2)бот не должен ругаться 3)бот сам должен здороваться и задавать вопросы 4) бот должен поддержать беседу на 3 темы (любых). Может, кто-нибудь сталкивался с таким, я могу изменить готовую прога или дописать. Главное понять принцип написания. Помогите, пожалуйста!!! |
| Автор: neic 5.5.2009, 19:45 |
| 1) Запихнуть последний заданый вопрос в глобальную переменную (ну или каким-то макаром запомнить) 2) Ну если ты не научишь бота ругаться, то он и не будет 3) При запуске выдавать приветствие. Ждать пока собесеседник ответит и смотреть в глобальную переменную на последний заданный вопрос, там будет пусто, значит задаём любой вопрос. 4) Предусмотреть сценарии разговора. С чего нужно начать: Нужно определить, как бот будет обрабатывать сообщение посланные собеседником (кстати как будут предаваться сообщения? На локальном компе или через какой-то проткол?). Лично я вижу такую реализацию: При посылке сообщения собеседником, смотреть сначала 100% совпадающее слово (фразу), а если это слово (фраза) не найдена, то резать сообщение на слова (союзы и предлоги наверное нужно будет выкидывать) и фразу, которая больше всего содержит эти слова, нужно будет выбрать. Также нужно будет предусмотреть синонимы. Я лишь описал ход моих мыслей, C не знаю так что с кодингом не могу помочь. П.с. естественно нужно хранить базу со словами (фразами), а также синонимы (или похожие фразы) |
| Автор: Sibi 5.5.2009, 20:24 |
| Спасибо. Сообщения будут просто вводиться на экране запущенного exe-файла. А как нужно проверять совпадения слов? И как в программе предусмотреть базу? |
| Автор: Dmi3ev 6.5.2009, 00:48 | ||||
Да именно так, советую юзать БД, удобнее будет, мне кажется... И начать с того, что создать пустую БД, где будет грубо говоря два поля вопрос и ответ на него Если ты при запуске проги вводишь вопрос, а не на него нет ответа, то предложить пользователю ввести ответ на него, так твоя программа будет самообучаться, в следующий раз на этот вопрос она уже ответит... такая реализация тупая, но, думаю, для того чтобы сдать в инсте хватит и этого... Можно и с файлом, структуру создать:
а потом читать из файла ее в вектор (или еще куда), и записывать в файл, если такой пары вопрос ответ еще нет... сам выбирай, я бы БД взял... neicу файл по душе... это уже дело твое... |
| Автор: Sibi 6.5.2009, 12:44 |
| Спасибо. Я не знаю как БД подключать, поэтому создам файл. А вот в проге написать, чтобы она осуществлял поиск по словам в файле? Подскажите, пожалуйста. |
| Автор: zim22 6.5.2009, 12:50 | ||
Sibi, почитайте какую-нибудь книжечку по С++. |
| Автор: neic 6.5.2009, 21:44 |
| Dmi3ev, у меня было 2 критерия выбора в пользу текстового файла: 1) легкость в освоении (не нужно знать про БД) 2) лёгкая расширяемость за счёт других пользователей, т.е. я захотел создал одну базу объединил эту базу с базой другого чела и т.д. |
| Автор: neic 6.5.2009, 22:23 | ||
Sibi, можно просто в файле сделать так
Например: Это ты?::Да, это я. :: - разделитель |
| Автор: Dmi3ev 7.5.2009, 17:24 | ||
neic, у меня никаких возражений... |
| Автор: Dmi3ev 7.5.2009, 17:57 | ||||||||
| + еще хочу поговорить про реализацию. Так вот, файл так файл, тогда бери *.ini файл, а для разработки бери C++ Builder, потому как при использовании такой связки можно быть полным нубом в программировании... А задание выполнишь за 10 секунд, не больше... Удобно! 1) Создаешь проект, кидаешь на форму два эдита и кнопку (5 секунд думаю хватит) 2) В событие OnClick кнопки пишешь следующий код (Думаю секунды 3 хватит чтобы это сделать):
Все готово! Остается еще 2 секунды до того, как пройдет 10 секунды с создания проекта, они нужны чтобы вставить вот этот хидер:
Ах да, сам файл myDB.ini должен выглядеть так:
Проще некуда... Добавлено через 1 минуту и 43 секунды В случае, если вопрос не найден будет выдаваться фраза по умолчанию
|
| Автор: Sibi 7.5.2009, 18:05 |
| neic, спасибо! Попробую. Добавлено через 4 минуты и 40 секунд Dmi3ev, ух ты, спасибо! Я правда C++ Builder никогда не пользовалась, но надо начинать. |
| Автор: Dmi3ev 7.5.2009, 18:24 | ||||
Для тебя в данном случае C++ Builder лучший выход, потому как разобраться в двух строках проще, чем в тоннах кода... Тем более, что их надо еще родить Единственное, можно продумать о добавлении новой пары вопрос-ответ в файл (это не сложно, а можно и ручками дописывать, структуру файла я тебе показал, по аналогии думаю сможешь написать вопросов и ответов сколько тебе надо) и + еще можно добавить 1 строку, так будет более правильно:
Удачи... |
| Автор: Sibi 20.5.2009, 20:55 |
| Dmi3ev, помоги еще раз, пожалуйста. Програмка работает, но не читает из файла вопросы, на любой отвечает "не знаю". Что делать? |
| Автор: Dmi3ev 20.5.2009, 21:02 |
| Sibi, как не читает? Добавлено через 33 секунды у меня этот код работает на ура, покажи свой... че ты без кода просишь че-то |
| Автор: zim22 20.5.2009, 21:05 | ||
не знаю |
| Автор: Sibi 20.5.2009, 21:11 | ||
Dmi3ev, я код точно с тебя скопировала
|
| Автор: Dmi3ev 20.5.2009, 22:57 |
| а ини файл как выглядит? Добавлено через 37 секунд и лежит ли он на С? и имеет ли он расширение ini? |
| Автор: Sibi 20.5.2009, 23:49 | ||
Dmi3ev, лежит на С, имеет расширение ini
|
| Автор: Dmi3ev 21.5.2009, 00:18 |
| Sibi, сделай тогда вот что, сотри имя файла, те "С:\\myDB.ini" и напиши его своими руками... попробуй... Добавлено через 46 секунд те то же самое, но заново, потому как возможно, что там есть русский символ ))) например С или В... |
| Автор: Sibi 21.5.2009, 00:39 |
| Ура! Получилось Добавлено через 5 минут и 45 секунд Вот у нас тетка такая странная, ни разу не появилась. атребует невозможного. Как создать робота, который ни один вопрос не оставляет без ответа? Это же не реально! |
| Автор: Dmi3ev 21.5.2009, 01:33 | ||
конечно, ничто не заменит человека ))) |
| Автор: Sibi 21.5.2009, 16:33 |
| Я сегодня пыталась ей сдать. Говорит, что вместо ответа "не знаю" должно выдаваться окно, где можно добавить вопрос ответ в файл. Я сказала, что я не программист высшей категории, а она ответила, чтоб еще раз подумала. Вот вредина. Может кто знает как? |