Pagini recente » Cod sursa (job #2028207) | Cod sursa (job #2287184) | Cod sursa (job #126494) | Cod sursa (job #3192291) | Cod sursa (job #2332695)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bool.in") ;
ofstream fout("bool.out") ;
string sir ,t;
bool val[30] ;
int i ;
bool termen() ;
bool factor() ;
bool eval()
{
bool rez;
rez = termen() ;
while ( sir[i] == 'O' && sir[i+1] == 'R' )
{
i=i+3 ;
rez = rez|termen();
}
return rez;
}
bool termen()
{
bool rez;
rez = factor() ;
while ( sir[i] == 'A' && sir[i+1] == 'N' )
{
i = i+4 ;
rez = rez&factor() ;
}
return rez;
}
bool factor()
{
bool rez=0;
if ( sir[i] == '(' )
{
i++ ;
rez = eval() ;
i++ ;
}
else if ( sir[i] == 'F' && sir[i+1] == 'A' )
{
i = i+6 ;
rez = false ;
}
else if ( sir[i] == 'T' && sir[i+1] == 'R' )
{
i = i+5 ;
rez = true ;
}
else if ( sir[i] == 'N' && sir[i+1] == 'O' )
{
i = i+4 ;
rez = !eval() ;
}
else
{
rez = val[sir[i]-'A'] ;
i = i+2 ;
}
return rez;
}
int main()
{
int n ,j;
getline(fin,sir) ;
fin >> n ;
fin >> t ;
t = '#'+t;
for ( j = 1 ; j <= n ; j++ )
{
val[t[j]-'A'] = !val[t[j]-'A'] ;
i = 0 ;
fout << eval() ;
}
}