Pagini recente » Cod sursa (job #2543722) | Cod sursa (job #2978695) | Cod sursa (job #79097) | Cod sursa (job #2535478) | Cod sursa (job #1667516)
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char s1[1010],s2[1010];
bool b[26];
int n, k, p,l;
bool f1();
bool f2();
bool f3();
bool f4();
bool f1()
{
bool x;
x = f2();
while( p+1<k && s2[p] == 'O' && s2[p+1] == 'R' ){
p = p + 2;
x = x|f2();
}
return x;
}
bool f2()
{
bool x;
x = f3();
while( p+2<k && s2[p] == 'A' && s2[p+1] == 'N' && s2[p+2] == 'D' ){
p = p+3;
x = x&f3();
}
return x;
}
bool f3()
{
bool x;
if( p+2<k && s2[p] == 'N' && s2[p+1] == 'O' && s2[p+2] == 'T'){
p = p+3;
x = f4();
x = !x;
}
else{
x = f4();
}
return x;
}
bool f4()
{
bool x;
if( s2[p] == '(' ){
p++;
x = f1();
p++;
}
else{
if( p+3<k && s2[p] == 'T' && s2[p+1] == 'R' && s2[p+2] == 'U' && s2[p+3] == 'E' ){
x = true;
p = p+4;
}
else if( p+4<k && s2[p] == 'F' && s2[p+1] == 'A' && s2[p+2] == 'L' && s2[p+3] == 'S' && s2[p+4] == 'E' ){
x = false;
p = p+5;
}
else{
x = b[s1[p]-65];
p++;
}
}
return x;
}
int main()
{
f.get(s1, 1000);
f.get();
l = strlen(s1);
for( int i = 0; i < l; i ++ )
if( s1[i] != ' ' )
s2[k++] = s1[i];
s2[k] = '\0';
f >> n;
f >> s1;
for( int i = 0; i < n; i ++ ){
p = 0;
b[s1[i]-65] = !b[s1[i]-65];
g<<f1();
}
return 0;
}