Pagini recente » Cod sursa (job #1770193) | Cod sursa (job #1083535) | Cod sursa (job #2666689) | Cod sursa (job #1816359) | Cod sursa (job #2311396)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("bool.in") ;
ofstream g ("bool.out") ;
char s[1005] ;
int N , i , j ;
char x;
int fv[250] ;
bool eval();
bool termen() ;
bool factor() ;
bool eval()
{
bool r = termen();
if (s[j] == 'O' && s[j+1] == 'R')
{
j += 3;
r = (r|termen());
}
return r;
}
bool termen()
{
bool r = factor();
if (s[j] == 'A' && s[j+1] == 'N' && s[j+2] == 'D')
{
j += 4;
r = (r&factor());
}
return r;
}
bool factor()
{
bool r;
if (s[j] == '(')
j ++ , r = eval() , j ++ ;
else if (s[j] == 'N' && s[j+1] == 'O' && s[j+2] == 'T')
{
j += 4;
r = !eval();
}
else if (s[j] == 'T' && s[j+1] == 'R' && s[j+2] == 'U' && s[j+3] == 'E')
{
j += 5;
r = true;
}
else if (s[j] == 'F' && s[j+1] == 'A' && s[j+2] == 'L' && s[j+3] == 'S' && s[j+4] == 'E')
{
j += 6 ;
r = false;
}
else r = fv[s[j]-'A' + 1] , j += 2;
return r;
}
int main()
{
f.getline(s,1003);
f >> N ;
f.get();
for (i = 1 ; i <= N ; ++i)
{
f >> x;
j = 0;
fv[x-'A'+1] = !fv[x-'A'+1];
g << eval() ;
}
f.close();
g.close();
return 0 ;
}