Cod sursa(job #3134875)

Utilizator matei8787Matei Dobrea matei8787 Data 31 mai 2023 17:44:49
Problema Bool Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<bits/stdc++.h>
using namespace std;
bool i;
string s;
bool valori[50];
void depaseste()
{
    while ( s[i] == ' ' )
        i++;
}
bool constanta();
bool variabila();
bool nu();
bool si();
bool sau();
bool expresie();
bool constanta()
{
    depaseste();
    if ( s[i] == 'T' )
    {
        i += 4;
        return true;
    }
    i += 5;
    return false;
}
bool variabila()
{
    depaseste();
    bool ans = valori[s[i]-'A'];
    i += 2;
    return ans;
}
bool expresie()
{
    depaseste();
    bool ans;
    if ( s[i] == '(' )
    {
        i++;
        ans = expresie();
        i++;
    }
    else if ( (s[i] == 'T' || s[i] == 'F') && s[i+1] != ' ' )
    {
        ans = constanta();
    }
    else
    {
        ans = variabila();
    }
    return ans;
}
bool nu()
{
    depaseste();
    i += 3;
    int ans = !expresie();
    return ans;
}
bool si()
{
    depaseste();
    int ans = expresie();
    i += 3;
    ans &= expresie();
    return ans;
}
bool sau()
{
    depaseste();
    int ans = expresie();
    i += 2;
    ans |= expresie();
    return ans;
}
int main()
{
    freopen("bool.in", "r", stdin);
    freopen("bool.out", "w", stdout);
    getline(cin, s);
    int n;
    cin>>n;
    char c;
    cin.get();
    while ( n-- )
    {
        cin.get(c);
        valori[c-'A'] = !valori[c-'A'];
        i = 0;
        cout<<expresie();
    }
    return 0;
}