Cod sursa(job #1307304)

Utilizator mvcl3Marian Iacob mvcl3 Data 1 ianuarie 2015 21:33:54
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
#include <string>

using namespace std;

const char iname[] = "evaluare.in";
const char oname[] = "evaluare.out";

int Step = 0, Eval();

string S;

int Get_Number()
{
    int number = 0;

    if(S[Step] == '(')  {
        ++Step;
        number = Eval();
        ++Step;
    }
    else    while(S[Step] >= '0' && S[Step] <= '9') number = number * 10 + S[Step] -'0', ++Step;

    return number;
}

int P_Operation()
{
    int number = Get_Number();

    while(S[Step] == '*' || S[Step] == '/')
        switch(S[Step]) {
            case '*' : { ++Step; number *= Get_Number(); break; }
            case '/'  : { ++Step; number /= Get_Number(); break; }
        }

    return number;
}


int Eval()
{
    int number = P_Operation();

    while(S[Step] == '+' || S[Step] == '-')
        switch(S[Step]) {
            case '+' : { ++Step; number += P_Operation(); break; }
            case '-' : { ++Step; number -= P_Operation(); break; }
        }

    return number;
}

int main()
{
    ifstream in( iname );   ofstream out( oname );

    in >> S;

    out << Eval();
}