Поиск:

Ответ в темуСоздание новой темы Создание опроса
> распознавание текста в строке, помогите с "ботом", курсовая горит! 
:(
    Опции темы
alexssman
  Дата 10.11.2008, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброе время суток, помогите с такой бедой  smile .

пишу бота, типа болтуна. нужен для курсовой.
подскажите как реализовать такую штуку, чтобы он видел определенные слова в строке ввода, и реагировал на них.
например чтобы в строке: "привет железяка" видел слово привет, и производил действие.
у меня на уме только: if (Memo2->Lines->Text=="привет")...
но при этом он не отвечает на фразу "привет железяка" а отвечает исключительно на "привет".

помогите советом, хоть на путь истинный направьте
PM MAIL   Вверх
Данкинг
Дата 10.11.2008, 02:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Код

if (Memo2->Lines->Text.Pos("железяка")!=0) 
 {
 ...нашли строку 
 }

Только в идеале ещё бы регистр учитывать надо.

Это сообщение отредактировал(а) Данкинг - 10.11.2008, 02:11


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alexssman
Дата 10.11.2008, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо, дельный совет.
а можно ли сюда прикрутить еще одно условие, типа
if (Memo2->Lines->Text.Pos("железяка")!=0)  or (Memo2->Lines->Text.Pos("железо")!=0) {}
как то так
PM MAIL   Вверх
mrbrooks
Дата 10.11.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



alexssman, а ты попробуй  smile 
PM MAIL   Вверх
YanTsys
Дата 10.11.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



С игнорированием регистра (все буквы в проверяемой строке преобразовавыются к нижнему регистру)

Код

if (Memo2->Lines->Text.LowerCase().Pos("железяка")!=0) 
 {
 ...нашли строку 
 }


PM MAIL ICQ   Вверх
Данкинг
Дата 10.11.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(alexssman @  10.11.2008,  11:09 Найти цитируемый пост)
а можно ли сюда прикрутить еще одно условие, типа

Нужно даже!  smile Только не OR, а ||, и скобки один раз. По-хорошему - чтобы искалось вхождение не именно "железяка", а " железяка ", "железяка," и т.п.




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
alexssman
Дата 10.11.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как прелесно, решение всех моих проблем smile спасибо

а как насчет такого:

у меня код выглядит примерно так

Код

if (Memo2->Lines->Text.LowerCase().Pos(" чем ")!=0)
{
randomize();
a=(rand() % 5);
if (a==1)
{
Memo1->Lines->Add(vi + Memo2->Lines->Text);
Memo1->Lines->Add("Бот: не знаю");
}
if (a==2)
{
Memo1->Lines->Add(vi + Memo2->Lines->Text);
Memo1->Lines->Add("Бот: это не в моей компетенции, отвечать на такие вопросы");
}
if (a==3)
{
Memo1->Lines->Add(vi + Memo2->Lines->Text);
Memo1->Lines->Add("Бот: откуда я знаю");
}
if (a==4)
{
Memo1->Lines->Add(vi + Memo2->Lines->Text);
Memo1->Lines->Add("Бот: понятия не имею");
}
if (a==5)
{
Memo1->Lines->Add(vi + Memo2->Lines->Text);
Memo1->Lines->Add("Бот: странный ты, одни вопросы");
}
}


и так на каждое слово.
как в итоге сделать, чтобы при вводе всех остальных слов, которых нет в списке, выводился какойто ответ.
если есть if, то можно и else прикрутить. 

Это сообщение отредактировал(а) alexssman - 10.11.2008, 12:15
PM MAIL   Вверх
Данкинг
Дата 10.11.2008, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



На Билдере есть оператор выбора switch!  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
mrbrooks
Дата 10.11.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Данкинг @  10.11.2008,  12:28 Найти цитируемый пост)
На Билдере есть оператор выбора switch!  smile  

Скорее в С/С++  smile 
PM MAIL   Вверх
YanTsys
Дата 10.11.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Данкинг @ 10.11.2008,  11:36)
По-хорошему - чтобы искалось вхождение не именно "железяка", а " железяка ", "железяка," и т.п.

Твой код уже ищет слово в любом месте строки, пробелы и запятые не мешают smile
PM MAIL ICQ   Вверх
Данкинг
Дата 10.11.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

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



Цитата(mrbrooks @  10.11.2008,  13:23 Найти цитируемый пост)
Скорее в С/С++

Ну да, просто для меня познания C++ ограничиваются Билдером. smile 

Цитата(YanTsys @  10.11.2008,  13:23 Найти цитируемый пост)
Твой код уже ищет слово в любом месте строки, пробелы и запятые не мешают

Да, но я несколько не то имел в виду. Например, тебе нужно выделить какое-то слово, к примеру, пишешь фильтр мата. Если ты забьёшь соответствующее слово, то у тебя матерными будут считаться  "подстрахуй", "Витебск", "рубля" и т.п. То есть тебе нужно искать не "х**", а " х** ", " х**," и тому подобное. smile 


Это сообщение отредактировал(а) Данкинг - 10.11.2008, 16:21


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
YanTsys
Дата 11.11.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Данкинг @ 10.11.2008,  16:19)
Да, но я несколько не то имел в виду. Например, тебе нужно выделить какое-то слово, к примеру, пишешь фильтр мата. Если ты забьёшь соответствующее слово, то у тебя матерными будут считаться  "подстрахуй", "Витебск", "рубля" и т.п. То есть тебе нужно искать не "х**", а " х** ", " х**," и тому подобное. smile

Ну тут уже человеку нужно например начиная с википедии изучить тему "синтаксический анализ"
Особенно если речь идет о курсовой, то материал пригодится smile
PM MAIL ICQ   Вверх
Great Cornholio
Дата 11.11.2008, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(alexssman @  10.11.2008,  14:47 Найти цитируемый пост)
как в итоге сделать, чтобы при вводе всех остальных слов, которых нет в списке, выводился какойто ответ.если есть if, то можно и else прикрутить. 



ага, а если есть свич, то default


Код


switch ( <switch variable> ) {

  case <constant expression> : <statement>; [break;]
    .
    .
    .
  default : <statement>;

}


PM   Вверх
mrbrooks
Дата 11.11.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Great Cornholio, ты что предлагаешь switch использовать для строк?
PM MAIL   Вверх
Great Cornholio
Дата 11.11.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



впринципе судя по посту, к какому это обращёно, то да. А в чём проблема? (Хотя возможно я просто ламер smile )
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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