Pagini recente » Cod sursa (job #2198063) | Cod sursa (job #2300643) | Cod sursa (job #1540675) | Cod sursa (job #2063952) | Cod sursa (job #1679761)
#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++;
b=f0();
p++;
}else{
if(*p=='T' && *(p+1)=='R' && *(p+2)=='U' && *(p+3)=='E'){
b=true;
p+=4;
}else if(*p=='F' && *(p+1)=='A' && *(p+1)=='L' && *(p+2)=='S' && *(p+3)=='E'){
b=false;
p+=5;
}else if(*p=='N' && *(p+1)=='O' && *(p+2)=='T'){
p+=3;
b=!f0();
}else if(*p>='A' && *p<='Z'){
b=vExpresii[*p-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<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;
fprintf(g,"%d",f0());
}
return 0;
}