Pagini recente » Cod sursa (job #2550892) | Cod sursa (job #829470) | Cod sursa (job #3137192) | Cod sursa (job #2276075) | Cod sursa (job #2149889)
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
char s[1001];
int val[26];
int p = 0;
int AND();
int OR();
int NR();
int OR() {
int x = AND();
p++;
while ( s[p] == 'O' ) {
p += 3;
x = ( x || AND() );
p++;
}
return x;
}
int AND() {
int x = NR();
p++;
while ( s[p] == 'A' ) {
p += 4;
x = ( x && NR() );
p++;
}
return x;
}
int NR() {
int x, no = 0;
while ( s[p] == 'N' && s[p + 1] == 'O' ) {
p += 4;
no = 1 - no;
}
if ( s[p] == '(' ) {
p++;
x = OR();
p++;
} else if ( s[p] == 'T' && s[p + 1] == 'R' ) {
p += 4;
x = 1;
} else if ( s[p] == 'F' && s[p + 1] == 'A' ) {
p += 5;
x = 0;
} else {
x = val[s[p] - 'A'];
p++;
}
return ( x + no ) % 2;
}
int main() {
FILE *fin, *fout;
int n, i = 0;
char ch;
fin = fopen( "bool.in", "r" );
fout = fopen( "bool.out", "w" );
s[i] = fgetc( fin );
while ( s[i] != '\n' ) {
s[++i] = fgetc( fin );
}
fscanf( fin, "%d", &n );
fgetc( fin );
for ( i = 0; i < n; i++ ) {
ch = fgetc( fin );
val[ch - 'A'] = 1 - val[ch - 'A'];
p = 0;
fprintf( fout, "%d", OR() );
}
fclose( fin );
fclose( fout );
return 0;
}