Cod sursa(job #2372425)

Utilizator flaviu_2001Craciun Ioan-Flaviu flaviu_2001 Data 7 martie 2019 09:13:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>
#define ff first
#define ss second

using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;

const string file = "evaluare";
const ll INF = 9223372036854775807ll;
const int inf = 2147483647;

int p;
string s;

int factor(), termen();

int eval()
{
    int r = factor();
    while(s[p] == '+' || s[p] == '-'){
        ++p;
        if(s[p-1] == '+')
            r += factor();
        else r -= factor();
    }
    return r;
}

int factor()
{
    int r = termen();
    while(s[p] == '*' || s[p] == '/'){
        ++p;
        if(s[p-1] == '*')
            r *= termen();
        else r /= termen();
    }
    return r;
}

int termen()
{
    int r = 0;
    if(s[p] == '('){
        ++p;
        r = eval();
        ++p;
    }
    else while(s[p] >= '0' && s[p] <= '9'){
        r = r*10+s[p]-'0';
        ++p;
    }
    return r;
}

int main()
{
    ifstream fin (file+".in");
    ofstream fout (file+".out");
    fin >> s;
    s += "#";
    fout << eval();
    return 0;
}