Pagini recente » Cod sursa (job #2337624) | Cod sursa (job #1097963) | Cod sursa (job #2214024) | Cod sursa (job #1229660) | Cod sursa (job #2427869)
#include <fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
int n, i, a[100];
char s[1010], v[101];
int isOR();
int isAND();
int getVAR();
int isOR()
{
if(s[i] == ' ') i++;
int r = isAND();
while(s[i] == 'O' && s[i+1] == 'R')
{ i += 2;
r = r | isAND();
}
return r;
}
int isAND()
{
if(s[i] == ' ') i++;
int r = getVAR();
while(s[i] == 'A' && s[i+1] == 'N' && s[i+2] == 'D')
{ i += 3;
r = r & getVAR();
}
return r;
}
int getVAR()
{
int r = 0;
if(s[i] == ' ') i++;
if(s[i] == '(')
{ i++;
r = isOR();
i++;
}
else if(s[i] == 'N' && s[i+1] == 'O' && s[i+2] == 'T')
{ i += 2;
r = 1^getVAR();
}
else if(s[i] == 'T' && s[i+1] == 'R' && s[i+2] == 'U' && s[i+3] == 'E')
{ i += 4;
r = 1;
}
else if(s[i] == 'F' && s[i+1] == 'A' && s[i+2] == 'L' && s[i+3] == 'S' && s[i+4] == 'E')
{ i += 5;
r = 0;
}
else
{ r = a[s[i]-'A'];
i++;
}
return r;
}
int main()
{
f.getline(s, 1001);
f >> n;
f >> v;
for(int p=0; p<n; p++)
{ i = 0;
a[v[p]-'A'] ^= 1;
g << isOR();
}
return 0;
}