输出命题公式的真值表
问题描述: 先输入一个正整数 n(n 小于等于 10),表示共有 n 个命题变元,再输入一个类 似于逆波兰表达式的字符串表示一个命题公式,约定在该字符串中用一位的十进 制数表示一个命题变元,用 a、o、n、i、e 分别表示且、或、非、蕴含、等值, 用类似于逆波兰表达式形式的字符串表示的命题公式的真值表波兰表达式(即二 元运算,两个操作数在前,运算符在后;一元运算,一个操作数在前,运算符在 后)。 输入 先输入一个小于等于 10 的正整数 n,再输入一个字符串。 输出 输出该字符串表示的命题公式的真值表。 提示: 如果用 P、Q、R 分别表示这三个命题变元的话, 输入数据 01a2i 表示的命题公式是:((P∧Q)→R) 输入数据 012ia 表示的命题公式是:(P∧(Q→R)) 输入数据 0n 表示的命题公式是:┐P 输入样例 3 01a2i 输出样例 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1
代码:
#include
#include
//#include
#include
using namespace std;
//char str[20];
string str;
int ans[20];
stacks;
int len;
int n;
//完成真值表的运算,类似于中缀转后缀求表达式的值。
void run()
{
while(!s.empty()){
s.pop();
}
char s1,s2,s3;
int top=1;
for(int i=0;i |