Automat skończony

0

Witam,
Wiem, że nikt nie będzie odrabiał za mnie lekcji ale może chociaż jakieś sugestie czy przykłady, linki itp. Mam do napisania program działający jak automat skończony. Program wczytuję słowo z pliku tekstowego i analizuję. Jest zdefiniowany alfabet i 1 lub więcej wyrażeń regularnych. Jeżeli słowo jest akceptowane wyrzucany jest odpowiedni komunikat. Nie wiem jak się do tego zabrać :-/
Dzięki za pomoc.
Przepraszam, może mało precyzyjnie nakreśliłem temat :-/ . Oczywiście pomijam zagadnienia we/wy gdyż jest mnóstwo informacji na ten temat w sieci. Chodzi mi o to, że mam jakiś konkretny graf (język akceptowany przez automat jest określony przez wyrażenie regularne, które jest podane (np. a(a + b)*b), tak więc można "naszkicować" graf takiego automatu). Ja nie wiem jak ten graf zapisać w języku programowania i w jaki sposób "przechodzić" go wczytując kolejne znaki słowa. Wiadomo, że jeżeli po wczytaniu całego słowa znajdziemy się w wierzchołku określonym jako końcowy to słowo jest akceptowane przez automat :-) Najlepiej gdyby to zrobić na jakieś tablicy, bez używania wskaźników.

0

//q: CIACH. dużo kodu, mało korzyści dla tematu

Kolejne znaki czytasz tworząc z nich wyrazy(użyj std::string). Piszesz dodatkową funkcje gdzie masz jakiś ciąg if'ów odpowiadających kolejnym zadaniom.

while(eof==false)
{
    //czytaj wyraz
    sprawdzWyraz(current);
}

void sprawdzWyraz(const std::string& curr)
{
    if(curr=="destroyWorld")
    {
        //do sth
    }
    else if(curr=="...")
    {
        //do sth
    }
    //i tak dalej
}
0

Śmiem twierdzić, że ten kod nie powinien być oglądany przez początkujących, jeszcze nabiorą złych nawyków...
//q: to komentarz odnośnie kodu, który został usunięty

0
natomiast napisał(a)

Witam,
Wiem, że nikt nie będzie odrabiał za mnie lekcji ale może chociaż jakieś sugestie czy przykłady, linki itp. Mam do napisania program działający jak automat skończony. Program wczytuję słowo z pliku tekstowego i analizuję. Jest zdefiniowany alfabet i 1 lub więcej wyrażeń regularnych. Jeżeli słowo jest akceptowane wyrzucany jest odpowiedni komunikat. Nie wiem jak się do tego zabrać :-/
Dzięki za pomoc.
Przepraszam, może mało precyzyjnie nakreśliłem temat :-/ . Oczywiście pomijam zagadnienia we/wy gdyż jest mnóstwo informacji na ten temat w sieci. Chodzi mi o to, że mam jakiś konkretny graf (język akceptowany przez automat jest określony przez wyrażenie regularne, które jest podane (np. a(a + b)*b), tak więc można "naszkicować" graf takiego automatu). Ja nie wiem jak ten graf zapisać w języku programowania i w jaki sposób "przechodzić" go wczytując kolejne znaki słowa. Wiadomo, że jeżeli po wczytaniu całego słowa znajdziemy się w wierzchołku określonym jako końcowy to słowo jest akceptowane przez automat :-) Najlepiej gdyby to zrobić na jakieś tablicy, bez używania wskaźników.

Jeśli chcesz bawić się w proste wyrażenia matematyczne pobaw się drzewami binarnymi.
Jeśli bardzo zależy Ci na grafach to możesz reprezentować je w formie tabeli(tzw forma gwiazdkowa o ile się nie mylę) lub np: w formie listy. Polecam zajrzeć do jakiejś książki z algorytmami tam na pewno będzie dość informacji.</image>

1 użytkowników online, w tym zalogowanych: 0, gości: 1