-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
75 lines (60 loc) · 1.61 KB
/
main.cpp
File metadata and controls
75 lines (60 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
using namespace std;
//Prototypes
bool isAcceptedByDFA(string);
void printAcceptedSubstrings(string, int);
//Main Function
int main() {
//Initialize variables
string sequence;
//Prompt and store DNA sequence from user
cout << "Input a DNA Sequence : ";
cin >> sequence;
//Check if original input is accepted by the DFA
cout << "Input String Is Accepted By the DFA : " << boolalpha << isAcceptedByDFA(sequence) << endl;
//Find all substrings and print accepted substrings
cout << "Matching Patterns : " << endl;
printAcceptedSubstrings(sequence, sequence.length());
}
//To check if argument string is accepted by DFA
bool isAcceptedByDFA(string sequence)
{
bool isAccepted = false; //isAccepted set to false before entering for loop
string state = "S"; //State will start at start
for(char s : sequence) //For each loop to check all characters in sequence
{
if(state == "1")
{
if(s == 'A')
{
state = "F";
}
}
if(state == "S")
{
if(s == 'A')
{
state = "1";
}
}
}
if(state == "F")
{
isAccepted = true;
}
return isAccepted;
}
void printAcceptedSubstrings(string sequence, int n)
{
for(int i = 0; i < n; i++)
{
for(int j = 1; j <=n - i; j++)
{
string stringToCheck = sequence.substr(i,j);
if(isAcceptedByDFA(stringToCheck))
{
cout << stringToCheck << endl;
}
}
}
}