📄 chenbo.txt
字号:
#include <iostream.h>
char word[][3]={
{'U','V','0'},
{'Q','V','0'},
{'U','Q','0'},
{'Q','Q','1'}};//矩阵表示
char K[]={'S','U','V','Q'};//状态集
char E[]={'a','b'};//有穷字母表
char string[10];
int result =0;
int v(char b)
{
int num=0;
for(int i=0;i<2;i++)
{
if(b==E[i]&&b!='#')num=i;
else if(b=='#')break;
}
return num;
}
int h(char b)
{
int num=0;
for(int i=0;i<4;i++)
{
if(b==K[i])
num=i;
}
return num;
}
void DFA(char a[],int length)
{
int i=0;
char st=K[i];//初态开始
for(int j=0;j<length;j++)
{
int k=v(a[j]);//索引值0或1
st=word[i][k];
if(st=='Q') {result =1;break;}
else if(k==0)//代表a
{
if(word[i][k+2]=='0')
{
i=h(st);
result =0;
}
else if(word[i][k+2]=='1')
result =1;
}
else if(k==1)//代表b
{
if(word[i][k+1]=='0')
{
i=h(st);
result =0;
}
else if(word[i][k+1]=='1')
result =1;
}
}
if (result == 0) {
cout <<a<<"不属于该语言!"<<endl;
}
else if (result ==1) {result=0;
cout <<a<<"属于该语言"<<endl;
}
}
void main()
{
int length=0,flag=1,m=0;
cout<<"G[S]:\n";
cout <<" S→aU|bV \n";
cout <<" U→bV|aQ \n";
cout <<" V→aU|bQ \n";
cout <<" Q→aQ|bQ|e \n";
while(flag==1)
{
// cout <<result;
cout <<"请输入字符串: \n";
cin >>string;
while (string[length]!=0)length++;
for(int i=0;i<length;i++)
{
if (string[i] == 'a' || string[i] =='b'||string[i] =='#'){m=1;}
else{cout <<"请输入字母a或b或#"<<endl;}
}
if(m==1)DFA(string,length);
cout <<"按1继续或0退出"<<endl;
cin >>flag;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -