Cod sursa(job #2182573)

Utilizator VarticeanNicolae Varticean Varticean Data 22 martie 2018 14:56:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out") ;
int i;
string s;
ll evaluare();

ll factor()
{
    ll r = 0;
    if( s[i] == '(')
    {
        i++;
        r = evaluare();
        i++;
    } else
    {
        while( s[i] >='0' && s[i] <='9' )
        {
            r *= 10;
            r += s[i] -'0';
            i++;
        }
    }
    return r;
}

ll termen()
{
    ll r = factor();

    while(s[i] == '*' || s[i] == '/')
    {
        i++;
        switch ( s[i-1] )
        {
           case '*' : r *= factor(); break;
           case '/' : r /= factor(); break;
        }
    }
    return r;
}

ll evaluare()
{
    ll r = termen();
    while( s[i] == '+' || s[i] == '-' )
    {
        i++;
        switch ( s[i-1] )
        {
            case '+' : r+= termen(); break;
            case '-' : r-= termen(); break;
        }
    }
        return r;
}


int main()
{
    ios::sync_with_stdio(0);
    in >> s;
    out << evaluare();

    return 0;
}