欢迎来到天天文库
浏览记录
ID:56829717
大小:30.50 KB
页数:9页
时间:2020-07-15
《利用真值表法求取主析取范式以及主合取范式的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#includeusingnamespacestd;charstr[100];//输入的命题公式inttv[20]={0};//真值指派的数组intlength;//命题公式长度charexpression[100];//将命题公式中的命题变元变为真值后的数组inticp(constcharc)//联结词的栈外优先级{intresult=-1;switch(c){case'#':result=0;break;case'(':result=10;brea
2、k;case'!':result=9;break;case'&':result=6;break;case'
3、':result=4;break;case'>':result=2;break;case')':result=1;}returnresult;}intisp(constcharc)//联结词的栈内优先级{intresult=-1;switch(c){case'#':result=0;break;case'(':result=1;break;case'!':result=8;break;case'&':result=7;break;case'
4、':result=
5、5;break;case'>':result=3;break;case')':result=10;}returnresult;}voidPlus(inta[],intq)//二进制加法指派真值{a[q]=a[q]+1;for(inti=q;a[i]==2;i--){a[i]=0;a[i-1]=a[i-1]+1;}}templateclassStack{public:virtualboolIsEmpty()const=0;virtualboolIsFull()const=0;virtualboolTop(T&x)const=0;virtualboolP
6、ush(Tx)=0;virtualboolPop()=0;virtualvoidClear()=0;};templateclassSeqStack:publicStack//顺序栈类{public:SeqStack(intmSize=30);~SeqStack(){delete[]s;}boolIsEmpty()const{returntop==-1;}boolIsFull()const{returntop==maxTop;}boolTop(T&x)const;boolPush(Tx);boolPop();voidClear(){top=-1;
7、}private:inttop;intmaxTop;T*s;};templateSeqStack::SeqStack(intmSize){maxTop=mSize-1;s=newT[mSize];top=-1;}templateboolSeqStack::Top(T&x)const{if(IsEmpty()){cout<<"Empty"<boolSeqStack::Push(Tx){if(IsFull())
8、{cout<<"Overflow"<boolSeqStack::Pop(){if(IsEmpty()){cout<<"Underflow"<9、ks;//运算栈voidPushOperand(bool);boolGetOperands(bool&,bool&);voidDoOperator(char);};voidCalculator::PushOperand(boolop){s.Push(op);}boolCalculator::GetOperands(bool&op1,bool&op2)//获取栈顶两个元素{if(!s.Top(op1)){cerr<<"Missingoperand!"<
9、ks;//运算栈voidPushOperand(bool);boolGetOperands(bool&,bool&);voidDoOperator(char);};voidCalculator::PushOperand(boolop){s.Push(op);}boolCalculator::GetOperands(bool&op1,bool&op2)//获取栈顶两个元素{if(!s.Top(op1)){cerr<<"Missingoperand!"<
此文档下载收益归作者所有