Pagini recente » Cod sursa (job #1639424) | Cod sursa (job #28937) | Cod sursa (job #170513) | Cod sursa (job #1359043) | Cod sursa (job #1679800)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
bool vExpresii[30];
char expresie[1001];
char* p=expresie;
bool f0();
bool f1();
bool f2();
bool f0(){
bool b=f1();
while(*p=='O'&&*(p+1)=='R'){
p+=2;
b=b || f1();
}
return b;
}
bool f1(){
bool b=f2();
while(*p=='A'&&*(p+1)=='N'&&*(p+2)=='D'){
p=p+3;
b=b && f2();
}
return b;
}
bool f2(){
bool b=false;
if(*p=='('){
p++;
return f0();
p++;
}else if(*p=='T' && *(p+1)=='R' && *(p+2)=='U' && *(p+3)=='E'){
return true;
p+=4;
}else if(*p=='F' && *(p+1)=='A' && *(p+1)=='L' && *(p+2)=='S' && *(p+3)=='E'){
return false;
p+=5;
}else if(*p=='N' && *(p+1)=='O' && *(p+2)=='T'){
p+=3;
return !f0();
}else{
b=vExpresii[*p-65];
p++;
}
return b;
}
int main()
{
char valori[100];
int N;
char c[2];
FILE* f=fopen("bool.in","r");
FILE* g=fopen("bool.out","w");
fgets(expresie,1001,f);
fgets(c,1,f);
fscanf(f,"%d %s",&N,&valori);
for(int i=0;i<strlen(expresie);i++){
if(expresie[i]==' '){
strcpy(expresie+i,expresie+i+1);
}
}
for(int i=0;i<30;i++){
vExpresii[i]=false;
}
for(int i=0;i<N;i++){
vExpresii[valori[i]-65]=!vExpresii[valori[i]-65];
p=expresie;
bool b=f0();
fprintf(g,"%d",b);
}
return 0;
}