#include"iostream"
#include"fstream"
using namespace std;
/////////////////////////////记录DFA状态的各个参数部分////////////////////////////////
int m,n,k;
char* zfj; //字符集
int begin; //开始状态
int**move; //转移矩阵
int* acc_ztj; //接受状态集
///////////////////////////使用的各个函数声明部分//////////////////////////////////
void frame(); //开始页面
void DfaBuild(); //生成DFA
void DfaLoad(); //读入DFA
bool ztj(int );// 判断是否属于接受状态集
int T(int , char ); //转移函数
void check();//判定算法
void check1(char *,int ,char []);//列举算法中使用的修改后的判定算法
void list( ); //列举可接受串算法
void accept(); //接受串
void error(); //拒绝串
////////////////////////////主函数部分/////////////////////////////////
void main() //主函数
{
frame(); //调用主框架
}
/////////////////////////各个函数定义部分///////////////////////////
void frame() //主框架定义
{
cout<<"请选择操作:"<<endl<<endl;
cout<<"1、生成DFA 2、读入DFA 3、退出"<<endl;
switch(getchar()){
case '1':
DfaBuild();
break;
case '2':
DfaLoad();
break;
case '3':
exit(0);
break;
default:
system("cls");
frame();
}
}
void DfaBuild() //新建DFA函数定义
{
system("cls");
cout<<"输入要生成的DFA信息:"<<endl;
cout<<"请输入字符集个数:"<<endl;
cin>>m;
zfj=new char[m+1];
cout<<"请输入"<<m<<"个字符"<<endl;
for(int i=0;i<m;i++)
{
cin>>zfj[i];
}
cout<<"请输入状态集个数:"<<endl;
cin>>n;
move=new int*[n];
for (i=0;i<n;i++)
{
move[i]=new int[m+1];
}
for (i=0;i<n;i++)
{
move[i][0]=i;
}
cout<<
DFA源码 来自淘豆网m.daumloan.com转载请标明出处.