Pagini recente » Cod sursa (job #1425499) | Cod sursa (job #2800559) | Cod sursa (job #1040119) | Cod sursa (job #838584) | Cod sursa (job #1081396)
#include <stdio.h>
#define LENGHT 1000
int exp ();
int variable ();
int op ();
char s[ LENGHT ], chars[ 27 ];
int p, ind = 0;
int exp(){
int rez, oper, x;
rez = variable ();
while ( p < ind && s[ p ] != ')' ){
oper = op ();
x = variable ();
if ( oper == 1 ) rez = rez && x;
else rez = rez || x;
}
return rez;
}
int variable (){
int rez;
if( s[ p ] == '(' ){
p++;
rez = exp();
p++;
while ( s[ p ] == ' ' ) p++;
return rez;
}
int ind2 = 0;
char lc;
while ( s[ p ] >= 'A' && s[ p ] <= 'Z' ){
ind2++;
lc = s[ p ];
p++;
}
while ( s[ p ] == ' ' ) p++;
if ( ind2 == 1 ) return chars[ lc - 'A' ];
if ( ind2 == 3 ) return !variable ();
if ( ind2 == 4 ) return 1;
return 0;
}
int op (){
int ind2 = 0;
while ( s[ p ] >= 'A' && s[ p ] <= 'Z' ){
ind2++;
p++;
}
while ( s[ p ] == ' ' ) p++;
if ( ind2 == 2 ) return 2;
return 1;
}
int main()
{
FILE *in = fopen ( "bool.in", "r" );
char ch;
ch = fgetc ( in );
while ( ch != '\n' ){
s[ ind ] = ch;
ind++;
ch = fgetc ( in );
}
FILE *out = fopen ( "bool.out", "w" );
int n, i;
fscanf ( in, "%d ", &n );
for ( i = 0; i < n; i++ ){
ch = fgetc ( in );
chars[ ch - 'A' ] = !chars[ ch - 'A' ];
p = 0;
fprintf ( out, "%d", exp () );
}
fclose ( in );
fclose ( out );
return 0;
}