资源简介
代码是基于VC++开发的,结构清晰,简单易懂,能够根据自己的需求更改代码,且程序的实现较为简单,执行较快。
代码片段和文件信息
#include
#include
#include
#include
#include
#include“cfg_pda.h“
#include“pda_cfg.h“
#include“store.h“
void cfg_pda();
void pda_cfg();
int length(char temp[]);
void digui(int tempchar s[]int num);
Store st1st3;
void main()
{
int choice=0;
cout<<“******CFG与PDA之间的相互转换******“< cout<<“请选择相应的操作:“< cout<<“1.cfg转换为pda“< cout<<“2.pda转换为cfg“< cout<<“0:退出操作!“< cin>>choice;
switch(choice)
{
case 1:
cfg_pda();
break;
case 2:
pda_cfg();
break;
case 0:
break;
default:
cout<<“输入错误!“< break;
}
}
int length(char temp[])
{
int i=0;
while(temp[i]!=‘\0‘)
i++;
return i;
}
void cfg_pda()
{
Cfg cfg;
Elem q;
int num=0i=0;
int VlengthPronum;
cout<<“***************************************“< cout<<“操作1:-----cfg转换为pda------“< cout<<“G=(VTPS)请按顺序输入VTPS:“< cout<<“Variable:“;
cin>>cfg.Various;
cout<<“Terminal:“;
cin>>cfg.Terminal;
cout<<“Production:“< Vlength=length(cfg.Various);
while(Vlength!=0)
{
cfg.grammar[num].nextelem1=(Elem)malloc(sizeof(elem));
q=cfg.grammar[num].nextelem1;
cout<<“请输入第“< cin>>q->leftelem>>Pronum;
q->nextelem=NULL;
while(Pronum!=0)
{
Elem p=(Elem)malloc(sizeof(elem));
cin>>p->leftelem;
p->nextelem=NULL;
q->nextelem=p;
q=q->nextelem;
Pronum--;
}
num++;
Vlength--;
}
cout<<“Start_symble:“;
cin>>cfg.Start_symbol;
for(int j=0;j if(cfg.Terminal[j]==‘$‘)
cfg.Terminal[j]=‘\0‘;
cout<<“***********************“< cout<<“cfg---->pda的输出结果:“< cout<<“其中δ转移函数为:“< for(j=0;j {
q=cfg.grammar[j].nextelem1;
while(q->nextelem!=NULL)
{
q=q->nextelem;
cout<<“δ(q$“<leftelem<<“)“< }
}
for(j=0;j cout<<“δ(q“< cout<<“***********************“< }
void pda_cfg()
{
dailta dail;
stacksymbol=‘Z‘;
int sumnum=0k=0i=0;
int dailnum=0j=0;
int m=0n1=0n2=0n3=0n4=0n5=0;
int num=0size=0mnum=0;
cout<<“***************************************“< cout<<“操作2:-----pda转换为cfg------“< cout<<“P=(QΣΓδqZ)请按顺序输入QΣΓδqZ:“< cout<<“Q:“;
cin>>Q;
cout<<“Σ:“;
cin>>T;
cout<<“Γ:“;
cin>>V;
cout<<“δ的数目:“;
cin>>sumnum;
while(sumnum!=0)
{
cout<<“输入第“< cin>>dail[k].cha>>dail[k].chb>>dail[k].chc>>dail[k].chd>>dail[k].che;
k++;
sumnum--;
dailnum++;
}
cout<<“q:“;
cin>>startstate;
num=strlen(V)-1;
for(i=0;i<200;i++)
for(j=0;j<200;j++)
{
st1[i].str[j]=‘\0‘;
st3[i].str[j]=‘\0‘;
}
for(i=0;i {
st1[i].str[0]=Q[i];
size++;
}
digui(numQsize);
i=strlen(Q);
mnum=pow(inum);
cout<<“***********************“< cout<<“pda
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5958 2013-10-30 15:33 Translate\cfg_pda.cpp
文件 327 2013-10-30 15:33 Translate\cfg_pda.h
文件 26605 2013-10-30 15:34 Translate\Debug\cfg_pda.obj
文件 254043 2013-10-30 15:34 Translate\Debug\Translate.exe
文件 287420 2013-10-30 15:34 Translate\Debug\Translate.ilk
文件 297680 2013-10-30 15:34 Translate\Debug\Translate.pch
文件 566272 2013-10-30 15:34 Translate\Debug\Translate.pdb
文件 74752 2013-10-30 15:34 Translate\Debug\vc60.idb
文件 69632 2013-10-30 15:34 Translate\Debug\vc60.pdb
文件 225 2013-10-30 15:33 Translate\pda_cfg.h
文件 54 2013-10-30 15:33 Translate\store.h
文件 4496 2013-10-30 15:33 Translate\Translate.dsp
文件 526 2013-10-30 15:33 Translate\Translate.dsw
文件 50176 2013-10-30 15:49 Translate\Translate.ncb
文件 48640 2013-10-30 15:49 Translate\Translate.opt
文件 1011 2013-10-30 15:34 Translate\Translate.plg
目录 0 2013-10-30 15:34 Translate\Debug
目录 0 2013-10-30 15:49 Translate
----------- --------- ---------- ----- ----
1687817 18
相关资源
- 关于一个假分数转换成带分数的小程
- c++封装好的IP的获取和修改源码,通过
- 视频格式转换C++实现思路
- GB2312编码和UTF-8互转c语言实现
- 图灵机用作转换器计算x的y次幂,含
- C++实现的高斯投影正算和反算
- 状态转换图c语言编译原理
- 7参数坐标转换源代码
- VC使用GDI+将BMP图像转换为JPG格式
- NFA到DFA的转换C语言实现
- c++实现数字转换英文无and
- C++实现软件自动更新(update)
- 如何将字符转换成ASCII
- 图像批量格式转换jpg,bmp,tif,png小
- Isight集成UG,UGupdate64位版制作过程
- 高斯投影正算C++源代码
- VC++ 中实现进制2进制,10进制,16进制
- sln转换dsw
- 将png格式图片转换成YUV格式,C++
- C++代码转换成C#工具
- c/c++采用编码转换表实现gbk与unicode互
- 编译原理课程设计——算术表达式、
- C语言jpg转换成bmp格式代码
- 网易云ncm付费音乐格式转换为MP3
- ASCII码转换C语言
- SAR_雷达影像处理源代码
- 操作系统 虚拟存储器地址转换
- c++c#结构体转换工具
- 用C语言实现NFA到DFA的转换过程
- 七参数坐标转换C语言代码
评论
共有 条评论