Pagini recente » Cod sursa (job #2486782) | Cod sursa (job #2119646) | Cod sursa (job #661253) | Cod sursa (job #780772) | Cod sursa (job #2532216)
#include <bits/stdc++.h>
using namespace std;
ifstream f("bool.in") ;
ofstream g ("bool.out") ;
bool eval() ;
bool termen() ;
bool factor() ;
int fv[40] , N , cnt = 0 ;
char s[1005] , character;
bool eval()
{
bool r = termen() ;
while (s[cnt] == 'O' && s[cnt + 1] == 'R')
{
cnt += 3;
r = (r|termen());
}
return r;
}
bool termen()
{
bool r = factor() ;
while (s[cnt] == 'A' && s[cnt+1] == 'N' && s[cnt+2] == 'D')
{
cnt += 4;
r = (r&factor()) ;
}
return r;
}
bool factor()
{
bool r ;
if (s[cnt] == '(')
{
cnt ++ ;
r = eval() ;
cnt ++ ;
}
else if (s[cnt] == 'N' && s[cnt+1] == 'O' && s[cnt+2] == 'T')
{
cnt += 4;
r = !factor();
}
else if (s[cnt] == 'T' && s[cnt+1] == 'R')
{
cnt += 5;
r = true ;
}
else if (s[cnt] == 'F' && s[cnt+1] == 'A')
{
cnt += 6;
r = false;
}
else
{
r = fv[s[cnt]-'A'] ;
cnt += 2;
}
return r;
}
int main()
{
f.getline(s,1005) ;
f >> N ;
f.get() ;
for (int i = 1 ; i <= N ; ++i)
{
f >> character ;
cnt = 0;
fv[character - 'A'] = !fv[character - 'A'] ;
g << eval() ;
}
}