Pagini recente » Cod sursa (job #2312009) | Cod sursa (job #565626) | Cod sursa (job #370458) | Cod sursa (job #268277) | Cod sursa (job #723121)
Cod sursa(job #723121)
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int i;
string expression;
vector <bool> var(30);
bool factor();
bool term();
bool eval()
{
bool r = term();
while(expression[i] == 'O' && expression[i + 1] == 'R')
{
i += 3;
r = r || term();
}
return r;
}
bool term()
{
bool r = factor();
while(expression[i] == 'A' && expression[i + 1] == 'N')
{
i += 4;
r = r && factor();
}
return r;
}
bool factor()
{
bool r;
if(expression[i] == '(')
{
++i;
r = eval();
++i;
}
else
if(expression[i] == 'T' && expression[i + 1] == 'R')
{
r = true;
i += 5;
}
else
if(expression[i] == 'F' && expression[i + 1] == 'A')
{
r = false;
i += 6;
}
else
if(expression[i] == 'N' && expression[i + 1] == 'O')
{
i += 4;
r = !factor();
}
else
{
r = var[expression[i] - 65];
i += 2;
}
return r;
}
int main()
{
ifstream in("bool.in");
getline(in, expression);
string change;
int N;
in >> N;
in >> change;
in.close();
ofstream out("bool.out");
for(int j = 0; j < N; ++j)
{
var[change[j] - 65] = !var[change[j] - 65];
i = 0;
out << eval();
}
out.close();
return 0;
}