Пятница, 19 Апреля 2024, 03:30

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » VI заготовка чат бота с++
VI заготовка чат бота с++
Sd-teamДата: Пятница, 13 Июля 2012, 22:30 | Сообщение # 1
был не раз
Сейчас нет на сайте
Может кто то хочет сделать чат бот , вот один из примеров как его сделать =)
конечно диалог можно увеличить так как богата ваша фантазия =)
Code
#include <iostream>
#include<string>
#include "stdlib.h"
using namespace std;
void start()
{
     cout<<"Welcom to Vi Human (bot chat program)"<<endl;
     cout<<"Please print you question ! "<<endl;
}
void Hello2()
{
    cout<<"Hi! what are you doing ?"<<endl;
}
void Hello1()
{
   cout<<"Hi human! I VI (Virtual Intelligence)"<<endl;
}
int main()
{

    start();

    string x;
    I:
    cin>>x;
    if(x=="hello")Hello1();
    if(x=="hi")Hello2();
    goto I;
    cin.get();
    cin.get();
    cin.get();
}


Сообщение отредактировал Sd-team - Пятница, 13 Июля 2012, 22:31
SaiteiДата: Пятница, 13 Июля 2012, 22:45 | Сообщение # 2
старожил
Сейчас нет на сайте
Только начал программировать или уже старичок? Я бы делал не так. А что если я введу "fdsjhsdfjhsdfh"? Баг :)
RUNGOGET2THECHOPAHДата: Пятница, 13 Июля 2012, 22:49 | Сообщение # 3
участник
Сейчас нет на сайте
Отдельный метод для каждой фразы - это мощно. И да, используй while, а то goto - самозашквар. И функция main должна что-то возвращать, судя по твоему коду.
SaiteiДата: Пятница, 13 Июля 2012, 22:50 | Сообщение # 4
старожил
Сейчас нет на сайте
Quote (RUNGOGET2THECHOPAH)
используй while,

+1. Только со своей задержкой, скажем, на 30 мс. Для процессора не полезны очень частые обращения
Sd-teamДата: Пятница, 13 Июля 2012, 22:51 | Сообщение # 5
был не раз
Сейчас нет на сайте
Не старичок и не новичок =)
Через массив можно избавится от ненужных запросов типа "fdsjhsdfjhsdfh"
SaiteiДата: Пятница, 13 Июля 2012, 22:53 | Сообщение # 6
старожил
Сейчас нет на сайте
Quote (Sd-team)
Не старичок и не новичок =)
Через массив можно избавится от ненужных запросов типа "fdsjhsdfjhsdfh"

Ну дык идею усовершенствуй. Забавно было бы :)
P.s. мы пересекались уже в моей теме "Locked World". Я просто долго на ник смотрел - показался знакомым. Разработку ещё не бросил :)
StageДата: Суббота, 14 Июля 2012, 02:38 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Quote
и не новичок =)

Ты преувеличиваешь.
goldsphereДата: Суббота, 14 Июля 2012, 08:58 | Сообщение # 8
заслуженный участник
Сейчас нет на сайте
Чтобы не было таких багов, про которые Saitei говорит.Сделай хоть после всех ифов такую вещь:
Code
else cout<<"I don't understand you.\n";

И никаких массивов не надо. В разве, что хранилища фраз.


FinderX - Android Аркада
НохчиДата: Суббота, 14 Июля 2012, 09:45 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Нельзя такой шлак на форум пропускать. Тему закрыть, автора на колыму.

Многие вопросы по Windows отпадут, если посмотреть тут
GavolotДата: Суббота, 14 Июля 2012, 10:13 | Сообщение # 10
Последователь Тени
Сейчас нет на сайте
Quote
Нельзя такой шлак на форум пропускать. Тему закрыть, автора на колыму.

Согласен, чат бот сделанный через ифы, что за бред))
Quote
Не старичок и не новичок =)

Сколько за С++ работаешь, я за месяц из консоли вылезти не могу, а ты уже не новичок.

База данных для такого дела нужна, причем редактируемая внешне и чтобы для программы на С++ были какие-то опозновательные вещи, можно конечно просто сделать первое-второе предложение, но тогда получится шлак, который не будет отличаться от ифов, не лучше ли сделать что-то типа опозновательного тега что-ли, т.е. вопрос, ответы потом тег КОНЕЦ и сново вопрос и ответы КОНЕЦ, ведь на много лучше получится. Для этого придется тоже кучу проверок делать, но зато потом уже не придется делать нечего, просто обновлять текстовый файл. Прежде чем выпускать что-то подобное нужно позаботиться об универсальности.


В общем что-то делаю, но пока не пойму ни как :)
Тень - выражение основной сущности человека.
ArchidoДата: Суббота, 14 Июля 2012, 10:21 | Сообщение # 11
Сэнсэй
Сейчас нет на сайте
Quote (Stage)
Ты преувеличиваешь.

Quote (Нохчи)
Нельзя такой шлак на форум пропускать. Тему закрыть, автора на колыму.

Аа, вы не понимаете, автору с его ботом нужно срочно проходить тест Тьюринга. У него есть все шансы king


C++ - он особенный. С помощью него можно не только выстрелить себе в ногу, но и повеситься в пустой комнате:)
SaiteiДата: Суббота, 14 Июля 2012, 13:20 | Сообщение # 12
старожил
Сейчас нет на сайте
Code
I:   
     while(true)    
     {
      Sleep(20);
      cin>>x;   
      if(x=="hello")Hello1();   
      if(x=="hi")Hello2();
      else cout<<"I don't understand you.\n";
     }   
      cin.get();   
      cin.get();   
      cin.get();   
   }

Вот так лучше, мне кажется

****А нет, я придурок xDDD траблы будут с кодом


Сообщение отредактировал Saitei - Суббота, 14 Июля 2012, 13:23
Lord_ZeonДата: Суббота, 14 Июля 2012, 16:49 | Сообщение # 13
частый гость
Сейчас нет на сайте
Sd-team,
Тоже были задумки сделать похожее, немного посидел над этим, вот что получилось.

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

1й Вариант.


2й Вариант, совпадения слов маловероятны, но максимальное слово может состоять из 8 букв.
Как работает:

Возьмем для примера слово Hello, слово состоит из 85121215, для сокращения опускаем 1, в итоге их всего 3.
Записываем в следующем порядке, 852253.
Хотя если взять набор букв hebvo или hevbo, 8522215 после сокращения они не будут ничем отличаться от Hello
Будут записаны также - 852253. Этим доказывается то что при сокращении, совпадения слов все же есть.



Посидел бы еще над этим, да лень, может тебе пригодится.


Сообщение отредактировал Lord_Zeon - Воскресенье, 15 Июля 2012, 13:34
RUNGOGET2THECHOPAHДата: Суббота, 14 Июля 2012, 17:56 | Сообщение # 14
участник
Сейчас нет на сайте
Quote (Saitei)
Только со своей задержкой, скажем, на 30 мс.

cin>> же сам приостанавливает выполнение до тех пор, пока пользователь не введет строчку.
SaiteiДата: Суббота, 14 Июля 2012, 18:15 | Сообщение # 15
старожил
Сейчас нет на сайте
RUNGOGET2THECHOPAH, точняк. Спасибо, я уже и забыл
GavolotДата: Понедельник, 16 Июля 2012, 13:07 | Сообщение # 16
Последователь Тени
Сейчас нет на сайте
Sd-team, Что ты обижаешься то? Чат бот сделанный через if'ы сам то вдумайся. Ты бы хоть приводил строки к одному регистру для анализа ботом.

В общем что-то делаю, но пока не пойму ни как :)
Тень - выражение основной сущности человека.
MorfayДата: Понедельник, 23 Июля 2012, 10:53 | Сообщение # 17
почетный гость
Сейчас нет на сайте
По идее, БД надо с полями "обращение - ответ", или хотя бы текстовый файлик. Ифами проверять... cry (представь что у тебя 300 фраз будет - это ж 300 ифов. а если фраз 2000?). Да и не полностью строку проверять, а делать анлизатор хотя бы примитивный, потому как, для проги "Привет бот" и "Бот привет" (да что там, даже "Привет бот.") будут разными. Следовательно, надо разбивать обращение на отдельные слова и искать в БД лучшее совпадение, и его уже выводить как ответ. Тут уже получится какой-никакой чат бот (тупенький правда).
cactus09Дата: Воскресенье, 29 Июля 2012, 01:02 | Сообщение # 18
был не раз
Сейчас нет на сайте
А вы не хотите заговорить с ботом по русски, а то все по забугорски и па забугорски biggrin
Code
...
setlocale( LC_ALL,"" );
...


"Никогда не бойся делать то, что ты не умеешь. Помни, ковчег был построен любителем . Профессионалы построили Титаник" (Л.Фейербах и Д.Берри)
Форум игроделов » Программирование » C/C++ » VI заготовка чат бота с++
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг