好文档 - 专业文书写作范文服务资料分享网站

离散数学实验报告记录

天下 分享 时间: 加入收藏 我要投稿 点赞

实 验 报 告

6

第一步:预处理 预处理,去除中缀表达式中条件->中的>,和双条件<=>中的= 和 > ,这样,所有的运算符只是一个字符,后期处理起来更加方便。 void ddd() { string::iterator i=zhong.begin(); //string类迭代器,需在头文件加入#include int flag=1; while(flag) { flag=0; for(i=zhong.begin();i!=zhong.end();++i) { if(*i=='>') { zhong.erase(i); flag=1; break; } if(*i=='=') { zhong.erase(i); 7

flag=1; break; } } } } 第二步:将中缀表达式转换后缀表达式 利用栈和优先级函数来将中缀表达式转换成后缀表达式,此函数另一个功能是将中缀表达式中所有出现过的字母变量都保存包名为alpha的string类中(string类为STL中的string,需要在头文件加入#include),并且alpha中不出现重复字母,这样,通过alpha.size()函数就可以得到所有字母变量的个数,并且方便后面枚举赋值映射。 全局变量: string zhong; //中缀表达式 char hou[1000]; //后缀表达式 string alpha; //存放所有字母变量 优先级函数: int icp(char a) //栈外优先级 8

{ } int isp(char a) //栈内优先级 { if(a=='#') return 0; if(a=='(') return 1; if(a=='!') return 11; if(a=='&') return 9; if(a=='|') return 7; if(a=='-') return 5; if(a=='<') return 3; if(a==')') return 12; if(a=='#') return 0; if(a=='(') return 12; if(a=='!') return 10; if(a=='&') return 8; if(a=='|') return 6; if(a=='-') return 4; if(a=='<') return 2; if(a==')') return 1; } 9

void change() //中缀表达式转换后缀表达式 { int j=0; stack s; //定义临时栈,需要在头文件加入#include char ch,y; s.push('#'); char t1,t2; stringstream ss(zhong); //字符串流,需要在头文件加入#include while(ss>>ch,ch!='#') { if(isalpha(ch)) //判断是不是字母,如果是,加入到alpha字符串中 { } else if(ch==')') { 10

hou[j++]=ch; //并且加入到后缀表达式字符串中 if(alpha.find(ch)==-1) { } alpha.push_back(ch);

离散数学实验报告记录

实验报告6第一步:预处理预处理,去除中缀表达式中条件->中的>,和双条件中的=和>,这样,所有的运算符只是一个字符,后期处理起来更加方便。voidddd(){string::iteratori=zho
推荐度:
点击下载文档文档为doc格式
0i7lw4asmh6et871df8g8njyy26yqz018l8
领取福利

微信扫码领取福利

微信扫码分享