Pagini recente » Cod sursa (job #754104) | Cod sursa (job #976961) | Cod sursa (job #2694493) | Cod sursa (job #3132289) | Cod sursa (job #1553192)
#include <fstream>
#include <string.h>
using namespace std;
ifstream fin("bool.in");
ofstream fout("bool.out");
char s[1005];
int i,lg;
int val[30];
char op[300];
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;
fin.getline(s,1005);
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();
}
}