Pagini recente » Cod sursa (job #1334032) | Cod sursa (job #30436) | Cod sursa (job #651369) | Cod sursa (job #1258691) | Cod sursa (job #1729294)
#include<iostream>
#include<fstream>
#include<string.h>
using namespace std;
bool a[26];
char expr[1005];
int lung;
int n;
int i;
bool eval();
bool evalfact();
bool evalterm();
bool evalexpr();
bool eval()
{
return a[expr[i]-65];
}
bool evalfact()
{
bool f;
if(expr[i]=='(')
{
i++;
f=evalexpr();
i=i+2;
}
else
if(expr[i]=='N'&&expr[i+1]=='O'&&expr[i+2]=='T')
{
i=i+4;
f=!eval();
}
else
{
if(!(a[i]=='O'&&a[i+1]=='R'||a[i]=='A'&&a[i+1]=='N'&&a[i+2]=='D'))
{f=eval();
i=i+2;
}
}
return f;
}
bool evalterm()
{
bool f=evalfact();
while(i<lung&&expr[i]=='A'&&expr[i+1]=='N'&&expr[i+2]=='D')
{
i=i+4;
f=f&&evalfact();
}
return f;
}
bool evalexpr()
{
bool f=evalterm();
while(i<lung&&expr[i]=='O'&&expr[i+1]=='R')
{
i=i+3;
f=f||evalterm();
}
return f;
}
int main()
{
ifstream f("bool.in");
ofstream g("bool.out");
f.get(expr,1000);
lung=strlen(expr);
f>>n;
for(int j=0;j<n;j++)
{
char c;
f>>c;
a[c-65]=!a[c-65];
i=0;
g<<evalexpr();
}
}