Pagini recente » Cod sursa (job #1804476) | Cod sursa (job #63350) | Cod sursa (job #1680645) | Cod sursa (job #1255347) | Cod sursa (job #2104461)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
using namespace std;
ifstream f ("bool.in");
ofstream g ("bool.out");
bool grad1();
bool grad2();
bool grad3();
char s[ 1001 ], ch;
int i, n;
bool a[ 51 ];
bool grad1(){
bool r = grad2();
while( s[ i ] == 'O' && s[ i + 1 ] == 'R' ){
i = i + 2;
r = r | grad2();
}
return r;
}
bool grad2(){
bool r = grad3();
while( s[ i ] == 'A' && s[ i + 1 ] == 'N' && s[ i + 2 ] == 'D' ){
i = i + 3;
r = r & grad3();
}
return r;
}
bool grad3(){
bool r = 0;
if( s[ i ] == '(' ){
++i;
r = grad1();
++i;
}
else{
if( s[ i ] >= 'A' && s[ i ] <= 'Z' ){
if( s[ i ] == 'T' && s[ i + 1 ] == 'R' ){
r = 1;
i = i + 4;
}
else{
if( s[ i ] == 'F' && s[ i + 1 ] == 'A' ){
r = 0;
i = i + 5;
}
else{
if( s[ i ] == 'N' && s[ i + 1 ] == 'O' ){
i = i + 4;
r = !a[ s[ i ] = 'A' ];
}
else{
r = a[ s[ i ] - 'A' ];
++i;
}
}
}
}
}
return r;
}
int main(){
f.getline( s, 1001 );
f >> n;
f.get();
for( int j = 1; j <= n; ++j ){
f.get( ch );
a[ ch - 'A' ] = !a[ ch - 'A' ];
i = 0;
g << grad1();
}
}