Pagini recente » Cod sursa (job #2571344) | Cod sursa (job #1194940) | Cod sursa (job #995969) | Cod sursa (job #1897714) | Cod sursa (job #113356)
Cod sursa(job #113356)
#include <stdio.h>
int v[35], n, lg=-1, i;
char s[1001], bau, c;
int factor();
int termen();
int val();
int expr();
int main()
{
freopen("bool.in", "r", stdin);
freopen("bool.out", "w", stdout);
scanf("%c", &c);
while (c!='\n')
{ s[++lg]=c; scanf("%c", &c); }
scanf("%d\n", &n);
for (int I=1; I<=n; I++)
{
scanf("%c", &bau);
v[bau-'A']=!v[bau-'A'];
i=0;
printf("%d", expr());
}
fclose(stdin);
fclose(stdout);
return 0;
}
int val()
{
int f;
if (s[i]=='N' && s[i+1]=='O' && s[i+2]=='T')
{
i+=3;
if (s[i]==' ') i++;
f=!expr();
if (s[i]==' ') i++;
return f;
}
else if (s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' ) { i+=4; if (s[i]==' ') i++; return 1; }
else if (s[i]=='F' && s[i+1]=='A' && s[i+2]=='L') { i+=5; if (s[i]==' ') i++; return 0; }
else {if (s[i]==' ') i++; return v[s[i]-'A'];}
}
int factor()
{
int f;
if (s[i]=='(')
{
i++;
f=expr();
i++;
}
else
f=val();
if (s[i]==' ') i++;
return f;
}
int termen()
{
int f=factor(), f2;
while (i<=lg && s[i]=='A' && s[i+1]=='N' && s[i+2]=='D')
{
i+=4;
f2=factor();
f=f && f2;
}
return f;
}
int expr()
{
int f=termen(), f2;
while (i<=lg && s[i]=='O' && s[i+1]=='R')
{
i+=3;
f2=termen();
f=f || f2;
}
return f;
}