Cod sursa(job #904832)

Utilizator davidoceaSintamarian David davidocea Data 4 martie 2013 21:27:35
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <cstdio>
#include <cctype>
#include <cstring>
using namespace std;
char c[100005];
int i=0;
int eval1();
int eval2();
int eval3();
int eval3(){
    int n=0;
    if(c[i]=='('){
        ++i;
        n=eval1();
        ++i;
    }
    while(isdigit(c[i])){
        n=n*10+(c[i]-'0');
        ++i;
    }
    return n;
}
int eval2(){
    int n=eval3();
    while(c[i]=='*'||c[i]=='/'){
        if(c[i]=='*'){
            ++i;
            n*=eval3();
        }
        else{
            ++i;
            n/=eval3();
        }
    }
    return n;
}
int eval1(){
    int n=eval2();
    while(c[i]=='+'||c[i]=='-'){
        if(c[i]=='+'){
            ++i;
            n+=eval2();
        }
        else{
            ++i;
            n-=eval2();
        }
    }
    return n;
}
int main () {
        freopen("evaluare.in","r",stdin);
        freopen("evaluare.out","w",stdout);
        scanf("%s",c);
        printf("%d",eval1());
        return 0;
}