Pagini recente » Cod sursa (job #1690615) | Cod sursa (job #893770) | Cod sursa (job #2791516) | Cod sursa (job #325118) | Cod sursa (job #2111804)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
char s[1005];
int val[30],numar;
int fct(int st,int dr)
{
while(s[st]==' ')
st++;
while(s[dr]==' ')
dr--;
int nr=0;
for(int i=dr;i>st;i--)
if(nr==0&&s[i]=='R'&&s[i-1]=='O')
{
int v1=fct(st,i-2);
int v2=fct(i+1,dr);
return (v1||v2);
}
else
if(s[i]==')')
nr--;
else
if(s[i]=='(')
nr++;
nr=0;
for(int i=dr;i>st+1;i--)
if(nr==0&&s[i]=='D'&&s[i-1]=='N')
{
int v1=fct(st,i-3);
int v2=fct(i+1,dr);
return (v1&&v2);
}
else
if(s[i]==')')
nr--;
else
if(s[i]=='(')
nr++;
if(s[st]=='('&&s[dr]==')')
return fct(st+1,dr-1);
if(s[st]=='N'&&s[st+1]=='O')
{
int v1=(fct(st+3,dr));
return !v1;
}
if(st!=dr)
{
if(s[st]=='T')
return 1;
return 0;
}
int v1=val[s[st]-'A'];
return v1;
}
int main()
{
int n,nr;
ifstream fin("bool.in");
ofstream fout("bool.out");
fin.getline(s,1005);
nr=strlen(s);
fin>>n;
for(int i=0;i<n;++i)
{
char x;
fin>>x;
val[x-'A']=!val[x-'A'];
fout<<fct(0,nr-1);
}
return 0;
}