📄 2483boolean表达式计算.cpp
字号:
#include<iostream>
#include<string.h>
using namespace std;
#include<stack>
stack<char> ch;
stack<int>va;
char s[1000];
int main()
{
int i,j,k,l;
int T=0;
int len;
while(gets(s))
{
if(strcmp(s,"")==0)break;
len=strlen(s);
while(!ch.empty())ch.pop();
while(!va.empty())va.pop();
int va1,va2,ch1,ch2;
for(i=len-1;i>=0;i--)
{
if(s[i]=='F')va.push(0);
else if(s[i]=='V')va.push(1);
else if(s[i]==')')ch.push(s[i]);
else if(s[i]=='!')
{
va1=va.top();va.pop();
va.push(1-va1);
}
else if(s[i]=='&')
{
ch.push(s[i]);
}
else if(s[i]=='|')
{
while(!ch.empty())
{
ch1=ch.top();
if(ch1==')')break;
ch.pop();
va1=va.top();va.pop();
va2=va.top();va.pop();
if(ch1=='|')
{
va.push(va1 | va2);
}
else if(ch1=='&')
{
va.push(va1 & va2);
}
}
ch.push(s[i]);
}
else if(s[i]=='(')
{
while(!ch.empty())
{
ch1=ch.top();ch.pop();
if(ch1==')')break;
va1=va.top();va.pop();
va2=va.top();va.pop();
if(ch1=='|')
{
va.push(va1 | va2);
}
else if(ch1=='&')
{
va.push(va1 & va2);
}
}
}
}
while(!ch.empty())
{
ch1=ch.top();ch.pop();
va1=va.top();va.pop();
va2=va.top();va.pop();
if(ch1=='|')
{
va.push(va1 | va2);
}
else if(ch1=='&')
{
va.push(va1 & va2);
}
}
va1=va.top();
T++;
if(va1==1)
printf("Expression %d: V\n",T);
else
printf("Expression %d: F\n",T);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -