Pagini recente » Cod sursa (job #2638784) | Cod sursa (job #2342769) | Cod sursa (job #548295) | Cod sursa (job #3213303) | Cod sursa (job #1510634)
#include <iostream>
#include <string.h>
#include <fstream>
#define nmax 1005
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char s[nmax];
int i,lg;
int val[30];
int evalexpr();
int evalterm();
int evaluare()
{int rez;
if(i+4 <lg && s[i]=='N' && s[i+1]=='O' && s[i+2]=='T')
{i=i+4;
rez=evalterm();
rez=1-rez;
return rez;}
if(i+3 <lg && s[i]=='T' && s[i+1]=='R' && s[i+2]=='U' && s[i+3]=='E')
{i+=4;return 1;}
if(i+4 <lg && s[i]=='F' && s[i+1]=='A' && s[i+2]=='L' && s[i+3]=='S' && s[i+4]=='E')
{i+=5;return 0;}
rez=val[s[i]-'A'];
i++;return rez;
}
int evalterm()
{
if(s[i]=='(')
{ i++;
int rez=evalexpr();
i++;
return rez;
}
int rez=evaluare();
return rez;
}
int evaland()
{int x,rez=evalterm();
while(i+4<lg && s[i]==' ' && s[i+1]=='A' && s[i+2]=='N' && s[i+3]=='D')
{i+=5;
x=evalterm();
rez=rez && x;
}
return rez;
}
int evalexpr()
{int x,rez=evaland();
while(i+3<lg && s[i]==' ' && s[i+1]=='O' && s[i+2]=='R')
{i+=4;
x=evaland();
rez=rez || x;
}
return rez;
}
int main()
{int n,j;
char op[300];
fin.getline(s,nmax);
lg=strlen(s);
fin>>n;
fin.get();
fin.getline(op,300);
for(j=0;j<n;j++)
{val[op[j]-'A']=1-val[op[j]-'A'];
i=0;
fout<<evalexpr();
}
}