-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAFD.cpp
26 lines (24 loc) · 1.02 KB
/
AFD.cpp
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
#include "AFD.hpp"
using namespace std;
bool AFD::cambiarDeEstadoAFD(vector<Estado*> estados, vector<Transicion*> tablaDeTransiciones, Estado* estadoActual, string cadena, char simbolo, int indice){
int i;
int k = tablaDeTransiciones.size();
if(indice < (int)cadena.size()){
indice++;
cout << endl;
for(i = 0; i < k; i++){
if(tablaDeTransiciones[i]->estadoActual == estadoActual->numeroDeEstado){
if(tablaDeTransiciones[i]->simboloDeTransicion == simbolo){
cout << "\tδ(q" << estadoActual->numeroDeEstado << "," << simbolo << ")";
cout << " = q" << tablaDeTransiciones[i]->estadoDeTransicion << endl;
return cambiarDeEstadoAFD(estados, tablaDeTransiciones, estados[tablaDeTransiciones[i]->estadoDeTransicion], cadena, cadena[indice],indice);
}
}
}
cout << "\tδ(q" << estadoActual->numeroDeEstado << "," << simbolo << ")";
cout << " = M" << endl;
return false;
}
else
return estadoActual->esFinal;
}