Cod sursa(job #1880546)

Utilizator giotoPopescu Ioan gioto Data 15 februarie 2017 20:17:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
using namespace std;

int p = 0;
char s[100001];
inline int eval();
inline int termen();
inline int factor();
inline int number();
int main()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    scanf("%s", s);
    printf("%d", eval());
    return 0;
}
inline int eval(){
    int r = termen();
    while(s[p] == '+' || s[p] == '-')
    if(s[p] == '+'){++p; r = r + termen();}
    else {++p; r = r - termen();}
    return r;
}
inline int termen(){
    int r = factor();
    while(s[p] == '*' || s[p] == '/')
    if(s[p] == '*'){++p; r = r * factor();}
    else {++p; r = r / factor();}
    return r;
}
inline int factor(){
    int r = 0;
    if(s[p] == '('){++p; r = eval(); ++p;}
    else r = number();
    return r;
}
inline int number(){
    int x = 0;
    while(s[p] >= '0' && s[p] <= '9')
        x = x * 10 + s[p++] - '0';
    return x;
}