Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

C++ Pomysł na...

Ostatnio zmodyfikowano 2010-01-31 01:18
Autor Wiadomość
Bartaz
Temat założony przez niniejszego użytkownika
C++ Pomysł na...
» 2009-12-14 21:44:11
A wiec tak chciałbym napisać coś podobnego do programu Snicers.
I prosił bym o przykład taki , że ktoś pisze jakieś zdanie i jeżeli w tym zdaniu
będzie np wyraz cześć to program coś tam robi.
Próbowałem już na różne sposoby ale nie działało.



P-12208
malan
» 2009-12-14 22:00:31
Konsolowy program tego typu nie byłoby trudno zrobić... Sprawdzasz po prostu jaką komendę user podał i odpowiadasz odpowiednim komunikatem.
Mógłbyś napisać to np. w WinAPI - program działałby w tle i przechwytywał znaki z klawiatury. Po wpisaniu jakieś komendy wykonywała by się dana funkcja (coś jak kody do gry), np. po wystukaniu na klawiaturze 'net' otwierała by się przeglądarka, 'czas' wyświetla się aktualny czas, 'cb' uruchamia się Code::Blocks ;d.
P-12212
Bartaz
Temat założony przez niniejszego użytkownika
...
» 2009-12-14 22:03:19
No takie coś to bym umiał ale mi chodzi , że jeżeli w zdaniu się znajdzie jakiś
wyraz to jak zrobić żeby program go "wykrył"?
P-12214
malan
» 2009-12-14 22:06:39
Jeśli operowałbyś na string-ach to funkcja find by się do tego nadawała.
P-12215
Bartaz
Temat założony przez niniejszego użytkownika
???
» 2009-12-14 22:10:53
Find ? z tego co o niej wyczytałem to  "Zwraca numer pozycji podciągu."
Nie rozumie tego zabardzo.
Mógłbyś jaśniej^^                
P-12216
malan
» 2009-12-14 23:14:41
Jeśli funkcja find znajdzie szukany znak/wyraz w ciągu zwraca jego pozycję, w przeciwnym wypadku zwraca -1.
Przykład:
C/C++
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    string zdanie = "Czesc, nazywam sie Jasio i mam 12 lat. C++ zaczalem sie uczyc jakies 7 lat temu . . .";
    string szukany;
    int poz;
   
    cout << "Czego szukasz? ";
    cin >> szukany;
   
    poz = zdanie.find( szukany );
   
    if( poz != string::npos )
         cout << "Znazalzem na pozycji " << poz;
    else
         cout << "Nie znalazlem nic :( (" << poz << ")";
   
    cin.sync();
    cin.get();
    return 0;
};

Jeśli chodzi o program, który chcesz napisać to masz tu mały przykład:
C/C++
#include <iostream>
#include <cstring>
using namespace std;

bool wyjscie = false;

const int gROZMIAR = 7;
string tKomendy[] = {
    "czesc",
    "jak sie masz?",
    "pogoda",
    "czas",
    "data",
    "ulubiona stronka",
    "narka",
};
string tOdpowiedz[] = {
    ". siemanko :D",
    ". nudze sie troche :(",
    ". snieg, deszcz, tornada - jedym slowem: zostan w domu ;)",
    ". prosze bardzo: 23:15",
    ". dzis mamy: 14/12/2009",
    ". nie podlizujac sie adminowi: ddt.pl ;p",
    ". juz mnie opuszczasz ;((( ?!"
};

bool fPrzeszukaj( string kom );
void fWyswietl( int id );

int main()
{
    string komenda;
   
    while( !wyjscie )
    {
        system( "CLS" );
       
        cout << "Dostepne komendy: \n";
        for( int i = 0; i < gROZMIAR; i++ ) cout << "- " << tKomendy[ i ] << endl;
       
        cout << endl << "Pogadaj ze mna :) - ";
        getline( cin, komenda );
       
        if( !fPrzeszukaj( komenda ) ) cout << "[UZYLES ZLEJ KOMENDY]" << endl;
       
        cin.sync();
        cin.get();
    }
   
    return 0;
};

bool fPrzeszukaj( string kom )
{
    bool freturn = false;
   
    for( int i = 0; i < gROZMIAR; i++ )
    {
        if( tKomendy[ i ] == kom )
        {
            fWyswietl( i );
            freturn = true;
            if( kom == tKomendy[ 6 ] ) wyjscie = true;
           
        }
    }
   
    return freturn;
};

void fWyswietl( int id )
{
    cout << tOdpowiedz[ id ] << endl;
};
Funkcji system użyłem ponieważ nie wiem, czy masz u siebie bibliotekę 'console ddt' - jeśli tak to zamień to koniecznie na clrscr().
Kod jest pisany na szybko i nie jest idealny, ale może choć trochę Cie naprowadzi.
P-12217
Bartaz
Temat założony przez niniejszego użytkownika
...
» 2010-01-30 23:12:53
Znowu nie do końca mi o to chodziło,
Ponieważ w pierwszym programie znajduje jego pozycje i sprawdza czy taki wyraz jest
a mi chodzi ,że jeżeli ten wyraz np "mam" będzie w tym zdaniu to wyświetli inne zdanie.
A drugi program jest dobry tylko ,że działa na jeden wyraz a nie całe zdanie...
P-13417
malan
» 2010-01-31 00:54:22
Pierwszy program szuka w zdaniu danego wyrazu.
Drugi, po wprowadzeniu odpowiedniego wyrazu "zwraca" odpowiedni komunikat (zdanie).
Pytanie: Jak napisać program, który wyszuka wyraz w zdaniu i odpowie odpowiednim komunikatem?
Naprawdę tak nie jasno piszę?
P-13418
« 1 » 2
  Strona 1 z 2 Następna strona