Pagini recente » Cod sursa (job #552442) | Cod sursa (job #833328) | Cod sursa (job #59211) | Cod sursa (job #1362613) | Cod sursa (job #1724923)
#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char s1[1010],s2[1010],c;
bool b[27];
int n, k, p,l;
bool f1();
bool f2();
bool f3();
bool f1()
{
bool x;
x = f2();
while( s2[p] == 'O' && s2[p+1] == 'R' ){
p = p + 2;
bool y = f2();
if( x == true || y == true )
x = true;
else
x = false;
}
return x;
}
bool f2()
{
bool x;
x = f3();
while(s2[p] == 'A' && s2[p+1] == 'N' && s2[p+2] == 'D' ){
p = p+3;
bool y = f3();
if( x == true && y == true )
x = true;
else x = false;
}
return x;
}
bool f3()
{
bool x;
if( s2[p] == 'N' && s2[p+1] == 'O' && s2[p+2] == 'T'){
p = p+3;
return !f3();
}
else if( s2[p] == '(' ){
p++;
x = f1();
p++;
}
else if( s2[p] == 'T' && s2[p+1] == 'R' && s2[p+2] == 'U' && s2[p+3] == 'E' ){
p = p+4;
return true;
}
else if( s2[p] == 'F' && s2[p+1] == 'A' && s2[p+2] == 'L' && s2[p+3] == 'S' && s2[p+4] == 'E' ){
p = p + 5;
return false;
}
else{
x = b[s2[p]-'A'];
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';
for( int i = 0; i < 26; i ++ )
b[i] = false;
f >> n;
for( int i = 0; i < n; i ++ ){
f >> c;
b[c - 'A'] = !b[c - 'A'];
p = 0;
g<<f1();
}
return 0;
}