Pagini recente » Cod sursa (job #1408665) | Cod sursa (job #390461) | Cod sursa (job #1592240) | Cod sursa (job #1459622) | Cod sursa (job #865437)
Cod sursa(job #865437)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std ;
#define maxsir 1001
#define maxn 101
char sir[maxsir] ;
char *p ;
int n ;
int val[maxn] ;
int evaluare() ;
int termen() ;
int factor() ;
int evaluare()
{
int rez = termen() ;
while( *p == 'O' && *( p + 1 ) == 'R' )
{
p += 3 ;
rez |= termen() ;
}
return rez ;
}
int termen()
{
int rez = factor() ;
while( *p == 'A' && *( p + 1 ) == 'N' && *( p + 3 ) == 'D' )
{
p += 4 ;
rez &= factor() ;
}
return rez ;
}
int factor()
{
int rez = 0 ;
if( *p == 'N' && *( p + 1 ) == 'O' && *( p + 2 ) == 'T' )
{
p += 4 ;
rez |= ! factor() ;
}
else
{
if( *p == 'T' && *( p + 1 ) == 'R' && *( p + 2 ) == 'U' && *( p + 3 ) == 'E' )
{
p += 5 ;
rez = 1 ;
}
else
{
if( *p == 'F' && *( p + 1 ) == 'A' && *( p + 2 ) == 'L' && *( p + 3 ) == 'S' && *( p + 4 ) == 'E' )
{
p += 6 ;
rez = 0 ;
}
else
{
if( *p == '(' )
{
++p ;
rez = evaluare() ;
++p ;
}
else
{
rez = val[ *p - 'A' ] ;
p += 2 ;
}
}
}
}
return rez ;
}
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
gets( sir ) ;
scanf("%d\n", &n);
for(int i = 1; i <= n; ++i )
{
char ch ;
scanf("%c", &ch);
val[ ch - 'A' ] = ! val[ ch - 'A' ] ;
p = sir ;
printf("%d", evaluare() );
}
return 0 ;
}