Pagini recente » Cod sursa (job #2370660) | Cod sursa (job #1711027) | Cod sursa (job #65604) | Cod sursa (job #2434536) | Cod sursa (job #2256099)
#include <fstream>
#include <cstring>
#include <iostream>
using namespace std;
ifstream f("bool.in");
ofstream g("bool.out");
int expresie();
int sau();
int si();
int i,fv[30],lg;
char c,s[1100],S[1100];
int expresie()
{
int val;
if(S[i]=='(')
{
i++;
val=sau();
i++;
}
else if(S[i]=='!')
{
i++;
return val=!expresie();
}
else if('A'<=S[i]&&S[i]<='Z')
{
val=fv[S[i]-'A'+1];
i++;
}
else if(S[i]=='0'||S[i]=='1')
{
i++;
val=S[i]-'0';
}
return val;
}
int si()
{
int val;
val=expresie();
while(i<=lg && (S[i]=='&'))
{
i++;
val=(val&expresie());
}
return val;
}
int sau()
{
int val;
val=si();
while(i<=lg && (S[i]=='^'))
{
i++;
val=(val|si());
}
return val;
}
int n,j;
int main()
{
f.getline(s,1100);
lg=-1;
i=0;
while(i<strlen(s))
{
if(s[i]=='('||s[i]==')')
{
lg++;
S[lg]=s[i];
i++;
}
else if(s[i]=='A'&&s[i+1]=='N')
{
i=i+3;
lg++;
S[lg]='&';
}
else if(s[i]=='O'&&s[i+1]=='R')
{
i=i+2;
lg++;
S[lg]='^';
}
else if(s[i]=='N'&&s[i+1]=='O')
{
i=i+3;
lg++;
S[lg]='!';
}
else if(s[i]=='F'&&s[i+1]=='A')
{
i=i+5;
lg++;
S[lg]='0';
}
else if(s[i]=='T'&&s[i+1]=='R')
{
i=i+4;
lg++;
S[lg]='1';
}
else if(s[i]==' '){i++;}
else
{
lg++;
S[lg]=s[i];
i++;
}
}
S[lg+1]='\0';
f>>n;
for(j=1;j<=n;j++)
{
f>>c;
fv[c-'A'+1]=(!fv[c-'A'+1]);
i=0;
g<<sau();
}
return 0;
}