用C++实现布尔表达式的真值问题目的:本课程设计是求中缀算术表达式真值问题.求中缀算术表达式值的问题是数据结构中栈的一个典型应用.通过本题,学生应掌握中缀表达式和后缀表达式的
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 19:27:59
用C++实现布尔表达式的真值问题目的:本课程设计是求中缀算术表达式真值问题.求中缀算术表达式值的问题是数据结构中栈的一个典型应用.通过本题,学生应掌握中缀表达式和后缀表达式的
用C++实现布尔表达式的真值问题
目的:本课程设计是求中缀算术表达式真值问题.求中缀算术表达式值的问题是数据结构中栈的一个典型应用.通过本题,学生应掌握中缀表达式和后缀表达式的转换方法和后缀表达式求值问题.
要求:已知某种类型的布尔表达式由“T”、“F”、“!”、“&”和“|”组成,其中,“T”代表真值True,“F”代表真值False,”代表逻辑非运算,“&”代表逻辑与运算,“|”代表逻辑或运算.并且,运算符“!”、“&”和“|”的优先级为:”最高,“|”最低,“&”介于“!”和“|”之间.你的任务是,计算给定布尔表达式的真值.
例如,布尔表达式“(T|T)&F&(F|T)”的真值为“F”.
求源代码.
用C++实现布尔表达式的真值问题目的:本课程设计是求中缀算术表达式真值问题.求中缀算术表达式值的问题是数据结构中栈的一个典型应用.通过本题,学生应掌握中缀表达式和后缀表达式的
#include <stdio.h>
#include <string.h>
bool eval(const char*s){ if(!s) return 0;
if(*s==0 || *s==')') return 0;
if(*s=='(') return eval(s+1);
const char*p=s;
char c=*p++; if(c!='T' && c!='F') printf("Invalid expression.\n"); return 0;
bool v=(c=='T')?1:0;
if(*p=='!') v!=eval(p+1);
else if(*p=='|') v|=eval(p+1);
else if(*p=='&')v&=eval(p+1);
else if(*p!=0 && *p!=')')printf("Invalid expression...\n");
return v;
}
int main(){
char*s="(T|T)&F&(F|T)";
printf("eval( %s )=%c\nPress Enter to quit...\n", s, (eval(s)==0)?'F':'T');
getchar();
return 0;
}