Cod sursa(job #2398204)

Utilizator greelioGreenio Greely greelio Data 5 aprilie 2019 10:29:23
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include<bits/stdc++.h>

using namespace std;

string s;
int p;

int termen();
int fact();

int eval() {
    int nr=termen();
    while (p<s.size() && (s[p]=='+' || s[p]=='-')) {
        ++p;
        if (s[p-1]=='+') nr+=termen();
        else if (s[p]=='-')  nr-=termen();
    }
    return nr;
}

int termen() {
    int r=fact();
    while (p<s.size() && (s[p]=='*' || s[p]=='/')) {
        ++p;
        if (s[p-1]=='*') r*=fact();
        else r/=fact();
    }
    return r;
}

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

int main() {
    ifstream cin("evaluare.in");
    ofstream cout("evaluare.out");
    cin>>s;
    cout<<eval();


    return 0;
}