Pagini recente » Cod sursa (job #1688300) | Cod sursa (job #1327183) | Cod sursa (job #1644379) | Cod sursa (job #1316288) | Cod sursa (job #1315283)
#include <cstdio>
#include <cstring>
#include <fstream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
char t[1005],s[1005],chr;
int c[30],i,n;
int expresie();
int termen();
int operat();
int operat()
{
if (s[i]=='A'&&s[i+1]=='N'&&s[i+2]=='D') {
i+=4;
return 1;
}
else {
i+=3;
return 0;
}
}
int expresie()
{ if (s[i]==' ') i++;
int r,t;
if (s[i]=='(') {
i++;
r=expresie();
}
else r=termen(),t;
i++;
while (i<strlen(s)&&s[i]!=')') {
if (operat()==1) {
t=termen();
if (r==1&&t==1) r=1;
else r=0;
} else {
t=termen();
if (r==0&&t==0) r=0;
else r=1;
}
}
i++;
return r;
}
int termen()
{
if (s[i]=='(') {
i++;
return expresie();
}
if (s[i]=='N'&&s[i+1]=='O'&&s[i+2]=='T') {
i+=4;
return 1-termen();
}
if (s[i]=='0') {
i++;
return 0;
}
if (s[i]=='1') {
i++;
return 1;
}
if (s[i]=='T'&&s[i+1]=='R'&&s[i+2]=='U') {
i+=4;
return 1;
}
if (s[i]=='F'&&s[i+1]=='A'&&s[i+2]=='L') {
i+=5;
return 0;
}
}
void change (int i)
{
if (i-1>=0&&s[i-1]>='A'&&s[i-1]<='Z') return ;
if (i+1<strlen(s)&&s[i+1]>='A'&&s[i+1]<='Z') return ;
if (s[i]<'A') return;
if (s[i]>'Z') return;
s[i]=c[t[i]-'A']+'0';
}
int main()
{
int j;
f.getline(t,1005);
for (i=0;i<strlen(t);i++) {
}
f>>n;f.get();
while (n!=0) {
f.get(chr);
c[chr-'A']=1-c[chr-'A'];
memset(s,0,sizeof(s));
memcpy(s,t,sizeof(s));
for (i=0;i<strlen(s);i++)
change(i);
i=0;
g<<expresie();
n--;
}
return 0;
}