Pagini recente » Cod sursa (job #2747142) | Cod sursa (job #2250231) | Cod sursa (job #1839721) | Cod sursa (job #2722452) | Cod sursa (job #743958)
Cod sursa(job #743958)
#include <fstream>
#include <string.h>
#include <stdlib.h>
#define MaxN 109
#define MaxS 1009
#define MaxC 30
using namespace std;
char S[MaxS],sch[MaxN],str[MaxN];
int N,k,var[MaxC];
int termen();
int factor();
ifstream fin("bool.in");
ofstream fout("bool.out");
int eval(){
int r=termen();
while (S[k]=='O' && S[k+1]=='R'){
k+=3;
r|=termen();
}
return r;
}
int termen(){
int r=factor();
while (S[k]=='A' && S[k+1]=='N' && S[k+2]=='D'){
k+=4;
r&=factor();
}
return r;
}
int factor(){
int r;
if (S[k]=='('){
k++;
r=eval();
k++;
}
else
if (S[k]=='N' && S[k+1]=='O'){
k+=4;
r=!factor();
}
else
if (S[k]=='T' && S[k+1]=='R'){
r=1;
k+=5;
}
else
if (S[k]=='F' && S[k+1]=='A'){
r=0;
k+=6;
}
else{
r=var[S[k]-'A'];
k+=2;
}
return r;
}
int main(){
fin.get(S,MaxS,'\n');
fin.get();
fin>>N; fin.get();
fin.get(sch,MaxN,'\n');
fin.close();
for(int i=0;i<N;i++){
var[sch[i]-'A']=1-var[sch[i]-'A'];
k=0;
fout<<eval();
}
fout.close();
}