Cod sursa(job #2187807)

Utilizator CarmenRo33Anghel Ionela Carmen CarmenRo33 Data 26 martie 2018 19:20:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>
#define ll long long
#include <string.h>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("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()
{
    fin >> s;
    fout << evaluare();

    return 0;
}