Back

example

// Design an FA that accepts a language over S={a, b} consisting of strings that do not contain a double a.
// Write a program to simulate this FA.

#include <iostream>
using namespace std;

void State3(string w, int i);
void State2(string w, int i);
void State1(string w, int i);

void State3(string w, int i){ 
    cout << "State 3" << endl;
    if (i == w.length()) {
        cout << "String is rejected" << endl;  // String ends in a non-final state
        return;
    } else {
        if (w[i] == 'a' || w[i] == 'b')
            State3(w, i + 1);
    }   
}

void State2(string w, int i){ 
    cout << "State 2" << endl;
    if (i == w.length()) {
        cout << "String is accepted" << endl;  // Final state
        return;
    } else {
        if (w[i] == 'b')
            State1(w, i + 1);
        else if (w[i] == 'a')
            State3(w, i + 1);  
    }  
}

void State1(string w, int i){ 
    cout << "State 1" << endl;
    if (i == w.length()) {
        cout << "String is accepted" << endl;  // Final state
        return;
    } else {
        if (w[i] == 'b')
            State1(w, i + 1);
        else if (w[i] == 'a')
            State2(w, i + 1);
    }    
}

int main(){ 
    string w;
    cout<<"Enter your string"<<endl;
    cin>>w;
    State1(w, 0);
    return 0;
}