Cod sursa(job #1525128)

Utilizator andreiudilaUdila Andrei andreiudila Data 14 noiembrie 2015 19:27:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

int l;
string s;
int rezultat();

int expr2()
{
    int rez=0;
    if(s[l]=='(')
       {
           ++l;
           rez=rezultat();
           ++l;
       }
    else while(s[l]>='0' && s[l]<='9') {

    rez=rez*10+(int)s[l]-48; ++l;

    }

    return rez;
}
int expr()
{
    int exp=expr2();

    while(s[l]=='*' || s[l]=='/')
    {
        if(s[l]=='*'){ ++l; exp*=expr2();}
        else { ++l; exp/=expr2();}
    }

    return exp;
}
int rezultat()
{
    int rez=expr();

    while(s[l]=='+' || s[l]=='-')
        {
            if(s[l]=='+'){ ++l; rez+=expr(); }
            else { ++l; rez-=expr();}
        }

    return rez;
}

int main()
{
    getline(fin, s);

    fout<<rezultat();
    return 0;
}