Pagini recente » Cod sursa (job #117037) | Cod sursa (job #2277130) | Cod sursa (job #862344) | Cod sursa (job #2887944) | Cod sursa (job #774551)
Cod sursa(job #774551)
#include <fstream>
#include <stack>
#include <cstring>
using namespace std;
bool lolo[1001];
char sir[10001];
int i, n;
int k, vectoras[1001];
stack <int> stiva;
int main()
{
ifstream f("bool.in");
ofstream g("bool.out");
f.getline(sir, 1500);
//transformam expresia in ubermegapolish
int p=strlen(sir);
for(i=0; i<p; i++)
{
if(isalpha(sir[i]) && !isalpha(sir[i-1]) && !isalpha(sir[i+1]))
{
k++;
vectoras[k]=sir[i];
}
else if(sir[i]=='T' && sir[i+1]=='R')
{
k++;
vectoras[k]=1;
}
else if(sir[i]=='F' && sir[i+1]=='A')
{
k++;
vectoras[k]=0;
}
else if(sir[i]=='N' && sir[i+1]=='O')
{
stiva.push(1001);
}
else if(sir[i]=='A' && sir[i+1]=='N')
{
if(!stiva.empty() && (stiva.top()==1001 || stiva.top()==1002))
{
k++;
vectoras[k]=stiva.top();
stiva.pop();
stiva.push(1002);
}
else
stiva.push(1002);
}
else if(sir[i]=='O' && sir[i+1]=='R')
{
if(!stiva.empty() && (stiva.top()==1001 || stiva.top()==1002 || stiva.top()==1003))
{
k++;
vectoras[k]=stiva.top();
stiva.pop();
stiva.push(1003);
}
else
stiva.push(1003);
}
else if(sir[i]=='(')
{
stiva.push(1004);
}
else if(sir[i]==')')
{
while(!stiva.empty() && stiva.top()!=1004)
{
k++;
vectoras[k]=stiva.top();
stiva.pop();
}
stiva.pop();
}
}
while(!stiva.empty())
{
k++;
vectoras[k]=stiva.top();
stiva.pop();
}
f>>n;
char x;
for(int j=1; j<=n; j++)
{
f>>x;
lolo[x]=!lolo[x];
for(i=1; i<=k; i++)
{
if(vectoras[i]<=1000)
{
stiva.push(lolo[vectoras[i]]);
}
else
{
if(vectoras[i]==1001)
{
if(!stiva.empty())
{
int k=stiva.top();
if(k==1)
k=0;
else
k=1;
stiva.pop();
stiva.push(k);
}
}
if(vectoras[i]==1002)
{
if(!stiva.empty())
{
int k=stiva.top();
stiva.pop();
int z=stiva.top();
stiva.pop();
if(k && z)
stiva.push(1);
else
stiva.push(0);
}
}
if(vectoras[i]==1003)
{
if(!stiva.empty())
{
int k=stiva.top();
stiva.pop();
int z=stiva.top();
stiva.pop();
if(k || z)
stiva.push(1);
else
stiva.push(0);
}
}
}
}
g<<stiva.top();
stiva.pop();
}
}