1、stackqueueusing namespace std;/一些函数的定义void initString(string &ini);/初始化string del_inlclue(string temp);/消去蕴涵符号string dec_neg_rand(string temp);/减少否定符号的辖域string standard_var(string temp);/对变量标准化string del_exists(string temp);/消去存在量词string convert_to_front(string temp);/化为前束形string convert_to_and(stri
2、ng temp);/把母式化为合取范式string del_all(string temp);/消去全称量词string del_and(string temp);/消去连接符号合取%string change_name(string temp);/更换变量名称/辅助函数定义bool isAlbum(char temp);/是字母string del_null_bracket(string temp);/删除多余的括号string del_blank(string temp);/删除多余的空格void checkLegal(string temp);/检查合法性char numAfectCha
3、r(int temp);/数字显示为字符/主函数void main() coutP)(#x)y(x)(x)x!b(x)(x!y)(a(b) string orign,temp; char command,command0,command1,command2,command3,command4,command5, command6,command7,command8,command9,command10; /=请输入(Y/y)初始化谓词演算公式 cincommand; if(command = y | command = Y) initString(orign); else exit(0);请输
4、入(Y/y)消除空格command0; if(command0 = | command0 = /del_blank(orign);/undone cout消除空格后是endl orign /= 请输入(Y/y)消去蕴涵项command1; if(command1 = | command1 = orign =del_inlclue(orign);消去蕴涵项后是请输入(Y/y)减少否定符号的辖域command2; if(command2 = | command2 = do temp = orign; orign = dec_neg_rand(orign); while(temp != orign)
5、;减少否定符号的辖域后是 ,全称量词为,存在量词为#,取反为,吸取为!,合取为%,左右括号分别为( 、 ),函数名请用一个字母请输入(y/n)选择是否用户自定义commandb; if(commandb =| commandb= cinini; ini = (x)(P(x)(y)(P(y)P(f(x, y)%(y)(Q(x,y)P(y)原始命题是ini蕴涵项 /ab变为a!b char ctemp100=; string output; int length = temp.length(); int i = 0,right_bracket = 0,falg= 0; stack stack1,s
6、tack2,stack3; strcpy(ctemp,temp.c_str(); while(ctempi != 0 & i b则用a!b替代 falg = 1; if(isAlbum(ctempi)/如果是字母则把ctempi弹出 stack1.pop(); stack1.push( stack1.push(ctempi);! i = i + 1; else if() = ctempi) right_bracket+; do if( = stack1.top() right_bracket-; stack3.push(stack1.top(); stack1.pop(); while(rig
7、ht_bracket != 0); stack3.push(stack1.top(); while(!stack3.empty() stack1.push(stack3.top(); stack3.pop(); i+; while(!stack1.empty() stack2.push(stack1.top(); stack1.pop();stack2.empty() output += stack2.top(); stack2.pop(); if(falg = 1) return output; return temp;string dec_neg_rand(string temp)/减少否
8、定符号的辖域 char ctemp100,tempc; int flag2 = 0; int i = 0,left_bracket = 0,length = temp.length(); stack stack1,stack2; queue =0); queue1.push( while(!queue1.empty() tempc = queue1.front(); queue1.pop(); stack1.push(tempc); i +; if(flag2 = 1) temp = output; /*/ char ctemp1100; string output1; stack11,sta
9、ck22; int falg1 = 0; int times = 0; int length1 = temp.length(),inleftbackets = 1,j = 0; strcpy(ctemp1,temp.c_str(); while(ctemp1j ! j =0 & times = 0) stack11.push(ctemp1j); if(ctemp1j = inleftbackets +; else if(ctemp1j = inleftbackets -; if(inleftbackets = 1 & ctemp1j+1 = ctemp1j+2 ! falg1 =1; stac
10、k11.push(/% j = j+1; j = j +1; if(falg1 = 1) stack11.push( stack11.pop();/此处有bug j +;stack11.empty() stack22.push(stack11.top(); stack11.pop();stack22.empty() output1 += stack22.top(); stack22.pop(); if(falg1 = 1) temp = output1; char ctemp3100; string output3; int k = 0,left_bracket3 = 1,length3 = temp.length(); stack13,stack23; in
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1