Cod sursa(job #1799525)

Utilizator raluca1234Tudor Raluca raluca1234 Data 6 noiembrie 2016 14:07:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
#include <cstdio>
#define MAX_S 100000
using namespace std;

char s[MAX_S+5], *p=s;

int factor();
int termen();

int eval() {
    int ans=factor();
    while (*p=='+' || *p=='-'){
        if (*p=='+'){
            p++;
            ans+=factor();
        }else{ //'-'
            p++;
            ans-=factor();
        }
    }
    return ans;
}

int factor(){
    int ans=termen();
    while (*p=='*' || *p=='/'){
        if (*p=='*'){
            p++;
            ans*=termen();
        }else{
            p++;
            ans/=termen();
        }
    }
    return ans;
}

int termen(){
    int ans=0;
    if (*p=='('){
        p++;
        ans=eval();
        p++;
    }else{
        while (*p>='0' && *p<='9'){
            ans=ans*10 + *p-'0';
            p++;
        }
    }
    return ans;
}

int main(){
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    scanf("%s", &s);
    printf("%d\n", eval());
    return 0;
}