Pomoc przy bocie
Ostatnio zmodyfikowano 2011-08-07 21:44
Holdysz Temat założony przez niniejszego użytkownika |
Pomoc przy bocie » 2011-08-07 16:56:06 W c++ robię bota i mam 2 pytania ale zanim je zadam przedstawię kod programu string pyt; start: cout << "\nPogadaj ze mna:\n " << endl; getline( cin, pyt );
if( pyt == tekst1[ 0 ] || pyt == tekst1[ 1 ] || pyt == tekst1[ 2 ] || pyt == tekst1[ 3 ] || pyt == tekst1[ 4 ] || pyt == tekst1[ 5 ] || pyt == tekst1[ 6 ] || pyt == tekst1[ 7 ] || pyt == tekst1[ 8 ] || pyt == tekst1[ 9 ] || pyt == tekst1[ 10 ] || pyt == tekst1[ 11 ] || pyt == tekst1[ 12 ] || pyt == tekst1[ 13 ] ) { cout << "\nWitaj!\n"; } 1.Chciałbym zrobić tak aby nie trzeba było pisać nowych zmiennych string np. string tekst[ 3 ]; tekst[ 0 ] = "co lubisz?"; tekst[ 1 ] = "co ty lubisz"; tekst[ 2 ] = "lubisz cos?";
tylko jakoś tak żeby była jedna zmienna string tekst="lubisz" i jak ją napiszę w zdaniu to aby program jak zobaczy słowo lubisz to wiedział ok jaką zmienną chodzi i wypisał odpowiedni tekst na ekranie. 2.Pytanie drugie to mniej skomplikowane bo chodzi o to że jak mam w środku if napisane cout<<"\nWitaj\n"; to żeby program mógł sobie losować spośród 2 odpowiedzi np. cout<<"witaj\n"; i cout<<"siema\n"; a wyświetlał na ekranie tylko jedną.Chodzi o to że raz tą a jak zaś napisze siema to odpisze drugą odpowiedź.Męcze się nad tymi rzeczami od 3 dni i nie mogę tego wykonać,to tyle oczekuję pomocy. |
|
m4tx |
» 2011-08-07 17:04:05 Hm, skoro piszesz linguabota, warto by lepiej znać C++, bo pytania, jakie zadajesz są trywialne... No, ale ok. 1. Hm... Wyszukujesz w tekście spację, rozdzielasz w taki sposób pojedyncze słowa do tablicy (vector najlepiej), a potem przelatujesz po całej tablicy i szukasz tego słowa. Z tego co mi wiadomo, szukanie w tablicy jest również w nagłówku algorithm. 2. Zrób sobie tablicę stringów z odpowiedziami, i jak masz np. 10 elementów w tej tablicy, to dajesz np. cout << tablica_odpowiedzi[ rand() % 10 ] . |
|
Mrowqa |
» 2011-08-07 17:11:07 tylko jakoś tak żeby była jedna zmienna string tekst="lubisz" i jak ją napiszę w zdaniu to aby program jak zobaczy słowo lubisz to wiedział ok jaką zmienną chodzi i wypisał odpowiedni tekst na ekranie. |
Przy takim bocie to jest raczej harówa niż myślenie... musisz czytać do jednego stringa i albo porównywać z innym (co polecam - można wczytać np. bazę z pliku :P) albo po prostu dostałej. 2.Pytanie drugie to mniej skomplikowane bo chodzi o to że jak mam w środku if napisane cout<<"\nWitaj\n"; to żeby program mógł sobie losować spośród 2 odpowiedzi np. cout<<"witaj\n"; i cout<<"siema\n"; a wyświetlał na ekranie tylko jedną.Chodzi o to że raz tą a jak zaś napisze siema to odpisze drugą odpowiedź.Męcze się nad tymi rzeczami od 3 dni i nie mogę tego wykonać,to tyle oczekuję pomocy. |
Losować czy wybierać ?? ;P string odp;
cout <<( odp == "Witaj" ? "siema!\n": "Witaj!\n" );
O to chodzi?? :P PS dla zrozumienia: wyrażenie logiczne ? wartość jeżeli prawda : wartość jeżeli fałszNawiasy są dlatego, bo operator << jest silniejszy od ?: :) |
|
mati1qazxsw2 |
» 2011-08-07 17:40:03 Źle piszesz tego bota powiem Ci, poczytaj o dynamicznej alokacji pamięci, zapisie list do pliku i pogrupuj odpowiednio odpowiedzi ze względu na intencje/humor itp., program powinien się uczyć poprzez wypytanie o sens nieznanego słowa.
@Mrowqa Twój numer wypowiedzi to liczba szatana :E |
|
Mrowqa |
» 2011-08-07 19:09:31 Hahaha!!! xD Tobie zostało jeszcze 602 postów :P |
|
SeaMonster131 |
» 2011-08-07 21:44:12 Ostatnio też takiego mini-bocika tworzyłem, ale akurat żeby sobie WinAPI ciut przypomnieć :P Ja to zrobiłem tak: string pWitam[] = { "elo", "siema", "witaj", "witam", "czesc" };
string pytanie; int found;
for( int i = 0; i < 50; i++ ) { if( i < 5 ) { found = pytanie.find( pWitam[ i ] ); if( found != string::npos ) { int odp = rand() % 100; if( odp <= 25 ) { rozmowa += "Edek: Czesc :)\r\n"; break; } else if( odp > 25 && odp <= 50 ) { rozmowa += "Edek: Witam ;)\r\n"; break; } else if( odp > 50 && odp <= 75 ) { rozmowa += "Edek: Siemka\r\n"; break; } else { rozmowa += "Edek: Witaj!\r\n"; break; } } } } czyli jeżeli w pytaniu znajdzie sie wyraz, który znajduje się w tablicy stringów pWitam[] to losuje liczbe i wyświetla odpowiednie powitanie :) Spisywało sie świetnie :P |
|
« 1 » |