【发布时间】:2018-03-29 23:15:15
【问题描述】:
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;
}
我在第 64 行的 main 中使用 'ciire' 方法出现错误,我不知道为什么。它说
错误:在“A”中请求成员“citire”,它是非类类型“automat_finit()”。
另外,如果我声明对象 A 而不是 A(),我会得到错误的分配错误。这是为什么呢?
【问题讨论】:
-
另外,大量链接问题here 也可能是重复目标
-
对于下一个错误:您输入了
CxQ,但随后使用CxF和CxSigma来确定数组大小。这些价值观是什么?
标签: c++