class automat_finit
{
int CxQ, CxF, CxSigma, CxTranzitii, q0, SC, *F;
char *Sigma;
struct delta
{
int a1, a2;
char c;
}*G;
public:
int tranzitie(int x, char c)
{
for(int i = 0; i < CxTranzitii; i++)
if((G[i].a1 == x) && (G[i].c == c))
return G[i].a2;
return -1;
}
automat_finit()
{
ifstream f("automatfinit.in");
SC = 0;
f >> CxQ;
F = new int[CxF];
for(int i = 0; i < CxF; i++)
f >> F[i];
Sigma = new char[CxSigma];
for(int i = 0; i < CxSigma; i++)
f >> Sigma[i];
f >> CxTranzitii;
G = new delta[CxTranzitii];
for(int i = 0; i < CxTranzitii; i++)
f >> G[i].a1 >> G[i].c >> G[i].a2;
f.close();
}
bool citire(char *cuvant)
{
int l = strlen(cuvant);
for(int i = 0; i < l; i++)
{
SC = tranzitie(SC, cuvant[i]);
if(SC == -1) return false;
}
for(int i = 0; i < CxF; i++)
if(SC == F[i]) return true;
return false;
}
};
int main()
{
automat_finit A();
char w[100];
cin>>w;
if(A.citire(w) == true) cout<<"Word accepted"<<endl;
else cout<<"Word denied"<<endl;
}
I get an error in main
on line 64 with the 'citire' method, and I don't know why. It says
error: request for member 'citire' in 'A', which is of non-class type 'automat_finit()'.
Also, if I declare object A
instead of A()
, I get bad alloc error. Why is that?