Cod sursa(job #1839808)

Utilizator medicinedoctoralexandru medicinedoctor Data 3 ianuarie 2017 14:37:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>

using namespace std;

ifstream cin("evaluare.in");
ofstream cout("evaluare.out");

string s;
int p=0;

int ev(); //evaluare
int fact(); //factor
int term(); //termen

int ev()
{
    int r=fact();
    while (p<=s.size() && (s[p]=='-' || s[p]=='+'))
        p++,(s[p-1]=='+')? r+=fact(): r-=fact();
    return r;
}

int fact()
{
    int r=term();
    while (p<=s.size() && (s[p]=='*' || s[p]=='/'))
        p++,(s[p-1]=='*') ? r*=term() : r/=term();
    return r;
}

int term()
{
    int r=0;
    if (s[p]=='(') p++,r=ev(),p++;
    else
        while (p<=s.size() && s[p]<='9' && s[p]>='0')
            r=r*10+s[p]-'0',p++;
    return r;
}

main()
{
    cin >> s;
    cout << ev();
}