Pagini recente » Cod sursa (job #1663418) | Cod sursa (job #178977) | Cod sursa (job #1740044) | Cod sursa (job #1156960) | Cod sursa (job #1679718)
#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();
if(*p=='O'&&*(p+1)=='R'){
p+=2;
if(*(p)==' '){
p++;
}
b=b || f1();
}
return b;
}
bool f1(){
bool b=f2();
if(*p=='A'&&*(p+1)=='N'){
p=p+3;
if(*(p)==' '){
p++;
}
b=b && f2();
}
return b;
}
bool f2(){
bool b=false;
if(*p=='('){
p++;
b=f0();
p++;
}else{
if(*p>='A' && *p<='Z' && *(p+1)==' '){
b=vExpresii[*p-65];
p+=1;
if(*(p)==' '){
p++;
}
}else if(*p=='T' && *(p+1)=='R'){
b=true;
p+=4;
if(*(p)==' '){
p++;
}
}else if(*p=='F' && *(p+1)=='A'){
b=false;
p+=5;
if(*(p)==' '){
p++;
}
}else if(*p=='N' && *(p+1)=='O'){
p+=3;
if(*(p)==' '){
p++;
}
b=!(vExpresii[*(p+1)-65]);
p+=1;
}
}
return b;
}
int main()
{
char valori[100];
int N;
FILE* f=fopen("bool.in","r");
FILE* g=fopen("bool.out","w");
fgets(expresie,1001,f);
fscanf(f,"%d%s",&N,&valori);
for(int i=0;i<N;i++){
vExpresii[valori[i]-65]=!vExpresii[valori[i]-65];
p=expresie;
fprintf(g,"%d",f0());
}
return 0;
}