《数据结构c语言》重言式判定------参考了别人的代码

《数据结构c语言》重言式判定------参考了别人的代码

ID:42023532

大小:103.00 KB

页数:7页

时间:2019-09-06

《数据结构c语言》重言式判定------参考了别人的代码_第1页
《数据结构c语言》重言式判定------参考了别人的代码_第2页
《数据结构c语言》重言式判定------参考了别人的代码_第3页
《数据结构c语言》重言式判定------参考了别人的代码_第4页
《数据结构c语言》重言式判定------参考了别人的代码_第5页
资源描述:

《《数据结构c语言》重言式判定------参考了别人的代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、重言式判定参考了别人的代码。2011-05-1117:19122人阅读评论(0)收藏举报【重言式判别】[问题描述]一个逻辑表达式如果对于其变元的任一种取值均为真,则成为重言式;反之,如果对于其变元的任一种取值都为假,则称为矛盾式,然而,更多的情况下,既非重言式,也非矛盾式。试写一个程序,通过真值表判别一个逻辑表达式屈于上述哪一类。,[基木要求](1)逻辑表达式从终端输入,长度不超过一行。逻辑运算符包括“丨”、“&5,和“〜”,分别表示或、与和非,运算优先程度递增,但可有括号改变,即括号内的运算优先。逻辑变元为大写字母。表达式中任何地方都可以含有多个空格符。(2

2、)若是重言式或矛盾式,可以只显示“TrueForever”或“FalseForever55,否则显示MSatisfactible5,以及变量名序列,与用户交互。若用户对表达式变元取定一组值,程序就求出并显示逻辑表达式的值。[测试数据](1)(A

3、〜A)&(B

4、〜B)(2)(A&〜A)&C(3)A

5、B

6、C

7、D

8、EI—A[实现提示](1)识别逻辑表达式的符号形式并建立二叉树可以有两种策略:自底向上的算符优先法和自顶向下分割,先序遍历建立二叉树的方法。(2)可设表达式中逻辑变量数不超过20o真值的产生可以通过在一维数组上维护一个“软计数器”实现,用递归算法实现更简单

9、。[cpp]viewplaincopyprint?1・#inc1ude2.usingnamespacestd;3・structArr4-{5.charletter;6.intweight;7.};8.classCys9・{10.public:11.Cys();12.voidGetTautology();〃输入表达式13.int_CreateT(int,int);〃虚拟创建二叉树14.intFindMin(int,int);〃找到weight最小的15.intcount();〃计算可满足式的值16.void_recursion(Arr*_ar

10、r,inti);//递归,穷举17.voidrecursion。;//使用接口函数18.voidPrint。;//输出结果19.~Cys();〃析构释放空间20.private:21.intnum;22.Arr*array;23.Arr_air[20];〃存放字母24.int_arrNum;25.inttrueforever;26.intfalseforever;27.};28.29.Cys::Cys()30.{31.trueforever=0;32.falseforever=0;33.array=newArr[20];34.for(inti=0;i<20;i

11、++){35.array[i].weight-1;36.array[i].letter='O';37.}38._arrNum=0;39.num=0;40.}41.voidCys::GetTautology()42.{43.inthas[27]={0};44.intweight=0;45.charch;63.64.67.68.71.72.75.76.77.78.80.coutvv%青输入一个逻辑表达式,以#结束”vvendl;47.while(cin»ch&&ch!=*#•)48.{51.52.54.56.49.50.53.55.57.58.59.60.61.6

12、2.65.66.69.70.73.74.79.81.82.83.84.86.if(ch=」Jcontinue;switch(ch)casef:weight+=4;break;casey:weight-=4;break;case&:array[num].letter=ch;array[num++].weight=weight+2;break;caseT:array[num].letter=ch;array[num++].weight=weight+1;break;casearray[num].letter=ch;array[num++].weight=weigh

13、t+3;break;default:array[num].letter=ch;if(!has[array[num].letter-'A']){_arr[_arrNum++].letter=array[num]」etter;has[array[num].letter-*A*]=1;}array[num++].weight=O;break;}}}intCys::FindMin(intlow,inthigh)87.{85.88.intmin=low;89.while(!array[min].weight)90.min++;91.92.if(min

14、for(inti=min;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。