Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define TOTAL_STATES 7
- #define FINAL_STATES 5
- #define ALPHABET_CHARCTERS 2
- #define UNKNOWN_SYMBOL_ERR 0
- #define NOT_REACHED_FINAL_STATE 1
- #define REACHED_FINAL_STATE 5
- enum DFA_STATES{q0,q1,q2,q3,q4,q5,q6};
- enum input{a,b};
- int Accepted_states[FINAL_STATES]={q0,q1,q2,q3,q4};
- char str[];
- long cnt=0;
- long cnt1=0;
- char alphabet[ALPHABET_CHARCTERS]={'a','b'};
- int Transition_Table[TOTAL_STATES][ALPHABET_CHARCTERS];
- int Current_state=q0;
- void DefineDFA()
- {
- Transition_Table[q0][a] = q1;
- Transition_Table[q0][b] = q5;
- Transition_Table[q1][a] = q2;
- Transition_Table[q1][b] = q5;
- Transition_Table[q2][a] = q3;
- Transition_Table[q2][b] = q5;
- Transition_Table[q3][a] = q4;
- Transition_Table[q3][b] = q5;
- Transition_Table[q4][a] = q6;
- Transition_Table[q4][b] = q5;
- Transition_Table[q5][a] = q6;
- Transition_Table[q5][b] = q0;
- Transition_Table[q6][a] = q6;
- Transition_Table[q6][b] = q6;
- }
- int DFA(char current_symbol)
- {
- int i,len;
- for(len=0;len<ALPHABET_CHARCTERS; len++)
- if(current_symbol==alphabet[len])
- break;//stops if any character other than a or b
- if(len==ALPHABET_CHARCTERS)
- return UNKNOWN_SYMBOL_ERR;
- for(i=0;i<FINAL_STATES;i++)
- if((Current_state=Transition_Table[Current_state][len])
- ==Accepted_states[i])
- return REACHED_FINAL_STATE;
- return NOT_REACHED_FINAL_STATE;
- }
- int main(void)
- {
- char current_symbol;
- int result;
- DefineDFA(); //Fill transition table
- printf("Enter a string :\n");
- string s
- cin>>s
- int a=0,b=0;
- for(int i=0;i<s.size();i++)
- {
- if(s[i]=='a') a++
- else b++;
- }
- if(a>4||b%2) cout<"Invalid"<<endl
- else cout<<"Valid"<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement