Pagini recente » Cod sursa (job #1588707) | Cod sursa (job #2615153) | Cod sursa (job #934753) | Cod sursa (job #2588841) | Cod sursa (job #320561)
Cod sursa(job #320561)
// bool.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
# include <string.h>
#define AND e[p]=='A' && e[p+1]=='N' && e[p+2]=='D'
# define OR e[p]=='O' && e[p+1]=='R'
#define TRUE e[p]=='T' && e[p+1]=='R' && e[p+2]=='U' && e[p+3]=='E'
#define FALSE e[p]=='F' && e[p+1]=='A' && e[p+2]=='L' && e[p+3]=='S' && e[p+4]=='E'
int va[200];
char e[1001];
int p=0;
int n,ra,c,st;
int termen();
int evaluare()
{
int a=termen(),d;
while(e[p]==' ')
p++;
while(AND || OR)
if(AND)
{
p=p+3;
d=termen();
if(d && a)
a=true;
else
a=false;
}
else if(OR)
{
p=p+2;
d=termen();
if(d || a)
a=true;
else
a=false;
}
return a;
}
int termen()
{
int a,ne=0;
while(e[p]==' ')
p++;
if(TRUE)
{
p=p+4;
a=1;
return a;
}
if(FALSE)
{
p=p+5;
a=0;
return a;
}
if(e[p]=='N' && e[p+1]=='O' && e[p+2]=='T')
{
ne=1;
p=p+3;
}
while(e[p]==' ')
p++;
if(e[p]>=65 && e[p]<=90)
{
if(ne==0)
a=va[e[p]];
else
a=!va[e[p]];
p++;
}
else if(e[p]=='(')
{
p++;
a=evaluare();
p++;
}
return a;
}
int main()
{
freopen("bool.in","r",stdin);
freopen("bool.out","w",stdout);
fgets(e,1000,stdin);
scanf("%d\n",&n);
for(int i=1;i<=n;i++)
{
scanf("%c",&c);
va[c]=!va[c];
ra=evaluare();
printf("%d",ra);
p=0;
}
return 0;
}