社区
C++ 语言
帖子详情
谁能帮我设计一个确定的有限自动机?
pengyu315
2005-03-23 04:24:48
紧急求救!哪位高人能帮我用C++写一个确定的有限自动机!
...全文
182
16
打赏
收藏
谁能帮我设计一个确定的有限自动机?
紧急求救!哪位高人能帮我用C++写一个确定的有限自动机!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pengyu315
2005-03-25
打赏
举报
回复
怎么没人回了?哪位大侠帮帮忙啊!
showlie
2005-03-23
打赏
举报
回复
老实说,我到现在还是没有搞清楚什么图灵机、××自动机什么的!太抽象了,又没人讲解,唉!
pengyu315
2005-03-23
打赏
举报
回复
有限自动机的运行
设计一个确定的有限自动机,写出状态转换函数,或画出状态图,编制程序,输入一个字符串,程序能判别该字符串是否能被该有限自动机接受,可以考虑输出能否接受的同时,输出状态路径。
⑴整数的判断:写出整数的正规式,画出状态图,写出状态转换函数。编出程序。难度:简单。
⑵同上的过程还可以进行:正偶数的判断、自然数的判断、定点数的判断等。
⑶实数的判断:过程同上。
这是完整的题目
终于把寻风的程序看懂了。但正规式是包括数字的啊。
"DFA为了区分状态,正规式中数字一律报错!!!"
我看不懂,嘿嘿。本人编译能力确实是不行啊。
qingcairousi
2005-03-23
打赏
举报
回复
到国外网站找找,说不定有源码
pengyu315
2005-03-23
打赏
举报
回复
再给题目一个解释!
编译原理里面的一个做词法分析的。
pengyu315
2005-03-23
打赏
举报
回复
#include"正规式.h"
我对这条语句很郁闷。能否给点解释?????????
期待中!!!!!!!
pengyu315
2005-03-23
打赏
举报
回复
先谢谢个位光临本贴。对。是词法分析的。
特别谢谢寻风。但错误太多。102个致命错。
GO ON!
xjp6688
2005-03-23
打赏
举报
回复
找找编译的书吧
arrowcy
2005-03-23
打赏
举报
回复
是词法分析里面的?
ra3
2005-03-23
打赏
举报
回复
不大明白
oyljerry
2005-03-23
打赏
举报
回复
有限自动机指什么?
晨星
2005-03-23
打赏
举报
回复
怎么跑出定时器来了?
xunfengxxx
2005-03-23
打赏
举报
回复
#include<iostream.h>
#include<stdlib.h>
void Initial(char a[],int &judge)
{
int k,flag1,flag2;
char ch1;
flag1=0;
flag2=0;
if((a[0]=='|')||(a[0]==')')||(a[0]=='*')||isdigit(a[0]))
{
cout<<"Error!You put the frist charater wrong!"<<endl;
judge=0;
}
if(isalpha(a[0]))
{judge=1;
}
for(k=1;a[k]!='\0';k++)///hefazifude panduan
{
ch1=a[k];
if(!isalpha(ch1)&&ch1!='|'&&ch1!='('&&ch1!=')'&&ch1!='*')
{
cout<<"Error!"<<setw(8)<<"You put the "<<k+1<<"th"<<" charater wrong!"<<endl;
judge=0;
}
if(ch1=='(')
flag1++;
if(ch1==')')
flag2++;
}
if(flag1!=flag2)//panduankuohaoshifoupipei
{
cout<<"Error!"<<setw(8)<<"Make sure the number of ( match with )!"<<endl;
judge=0;
}
}
void Letter()
{
if(a[j+1]!='*')
{
if(i==0)
{
sta[i]=0;
end[i]=count;
path[i]=ch;
i++;
count++;
}
else
{
sta[i]=end[i-1];
end[i]=count;
path[i]=ch;
i++;
count++;
}
}
else
{
if(i==0)
{
sta[i]=0;
end[i]=0;
path[i]=ch;
i++;
j++;
}
else
{
sta[i]=end[i-1];
end[i]=end[i-1];
path[i]=ch;
i++;
j++;
}
}
}
///////////////////////////////////////////////////////////////
void Kuohao()
{
if(i==0)
consit=0;
else
consit=end[i-1];
while(a[j]!=')')
{
j++;
ch=a[j];
if(isalpha(ch))
Letter();
if(ch=='(')
Kuohao();
if(ch=='|')
Huo();
}
j++;
ch=a[j];
if(ch=='*')
{
sta[i]=end[i-1];
path[i]='e';
end[i]=consit;
i++;
}
consit2=end[i-1];/////
if(isalpha(ch))
Letter();
}
/////////////////////////////////////////////////////////
void Huo()
{
if(a[j-1]==')')
{
j++;
ch=a[j];
if(ch=='(')//////
{
j++;
ch=a[j];
sta[i]=consit;
path[i]=ch;
end[i]=count;
count++;
i++;
j++;
ch=a[j];
while(a[j+1]!=')')
{
if(isalpha(ch))///****
Letter();
if(ch=='(')
Kuohao();
if(ch=='|')
Huo();
j++;
ch=a[j];
}
cout<<ch<<endl;
sta[i]=end[i-1];
path[i]=ch;
end[i]=consit2;
i++;
}//////
else
{
sta[i]=consit;
path[i]=ch;
end[i]=end[i-1];
//count++;
i++;
}
}///////
else
{
consit3=end[i-1];
j++;
ch=a[j];
if(isalpha(ch))
{
consit=sta[i-1];
sta[i]=consit;
path[i]=ch;
end[i]=end[i-1];////
//count++;
i++;
}//////////////////////////
if(ch=='(')
{
j++;
ch=a[j];
if(a[j+1]!=')')
{
sta[i]=sta[i-1];
path[i]=ch;
end[i]=count;
i++;
count++;
j++;
ch=a[j];
while(a[j+1]!=')')
{
if(isalpha(ch))
Letter();
// if(ch=='(')
// Kuohao();
// if(ch=='|')
// Huo();
j++;
ch=a[j];
}////////
sta[i]=end[i-1];
path[i]=ch;
end[i]=consit3;
i++;
}///////////******************
}//////////////////////*************
}
}
void print_f()
{ cout<<"请输入正规式:"<<endl;
cin>>a;
Initial(a,judge);
while(judge==0)
{cin>>a;
Initial(a,judge);
}
while(a[j]!='\0')
{
ch=a[j];
if(isalpha(ch))
Letter();
if(ch=='(')
Kuohao();
if(ch=='|')
Huo();
j++;
}
total=i;
cout<<"你的正规式的DFA为:"<<endl;
for(i=0;i<total;i++)
cout<<sta[i]<<setw(6)<<path[i]<<setw(6)<<end[i]<<endl;
cout<<"还想继续执行吗?"<<"1----yes "
<<"0-----no"<<endl;
char ch;
cin>>ch;
switch(ch)
{
case '1':print_f();break;
case '0':exit(0);
default:
{
cout<<"请做出认真选择谢谢合作!"<<endl;
cin>>ch;
switch(ch)
{
case '1':print_f();break;
case '0':exit(0);
default:cout<<"对不起你可能不要再输了欢迎使用再见"<<endl;break;
}
}
}}
xunfengxxx
2005-03-23
打赏
举报
回复
#include<iostream.h>
#include<ctype.h>
#include<iomanip.h>
#include<math.h>
void Letter();/////判断字母,及处理。
void Kuohao();/////判断括号,及处理。
void Huo();
void print_f();
void Initial(char ,int &);
char a[20],path[20];
int sta[20],end[20];
char ch,consit,consit2,consit3;
int count,j,i,total;
int flag10;
int judge;
#include"正规式.h"
#include<time.h>
//////////////////////////////////////////////
void main()
{ cout<<"输入正规式请用字母表示"<<endl;
cout<<"DFA为了区分状态,正规式中数字一律报错!!!"<<endl;
count=1;
j=0;
i=0;
//cout<<a<<endl;
//cout<<"judge:"<<judge<<endl;
print_f();
}
///////////////////////////////////////////////////////////////
pengyu315
2005-03-23
打赏
举报
回复
不懂啊。做编译的课程设计。啥都不懂。:(
xlwyx0501
2005-03-23
打赏
举报
回复
设置定时器!SetTimer(1, 500);
不想用时就KillTimer(1);
编译原理-
有限自动机
.zip
实验目的:利用状态表和
有限自动机
的运行原理编写和
设计
程序,判断输入的自动机是DFA还是NFA,如果是NFA,利用子集法将其
确定
化,然后利用求同法或求异法将所得的DFA最小化。 实现功能:1.建议以文本文件形式来描述...
编译原理
有限自动机
运用
设计
一个
确定
的
有限自动机
,写出状态转换函数,或画出状态图,编制程序,输入
一个
字符串,程序能判别该字符串是否能被该
有限自动机
接受,可以考虑输出能否接受的同时,输出状态路径。难度:一般。
上机实验2-3
有限自动机
的
确定
化和最小化)1
二、实验目的 1. 理解
有限自动机
的作用,进一步理解
有限自动机
理论 2.
设计
有限自动机
的表示方式,采用合理的数据结构表示自动机的五个组成部分 3.掌握ε闭包的
实验二-
有限自动机
.zip(实现代码有详细解释)
利用状态表和
有限自动机
的运行原理编写和
设计
程序,判断输入的自动机是DFA还是NFA,如果是NFA,利用子集法将其
确定
化,然后利用求同法或求异法将所得的DFA最小化。
杭电编译原理实验——
有限自动机
的
确定
化和最小化
利用状态表和
有限自动机
的运行原理编写和
设计
程序,判断输入的自动机是DFA还是NFA,如果是NFA,利用子集法将其
确定
化,然后利用求同法或求异法将所得的DFA最小化。
C++ 语言
64,683
社区成员
250,490
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章