Cod sursa(job #2033198)

Utilizator Vlad3108Tir Vlad Ioan Vlad3108 Data 6 octombrie 2017 12:15:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
#define LMAX 100005
char v[LMAX];
int poz;
int Sum();
int Nr(){
    int n=0;
    if(v[poz]=='('){
        ++poz;
        n=Sum();
        ++poz;
        return n;
    }
    while(v[poz]>='0'){
        n=n*10+v[poz]-'0';
        ++poz;
    }
    return n;
}
int Prod(){
    int P=Nr();
    while(v[poz]=='/'||v[poz]=='*'){
        if(v[poz]=='/'){
            ++poz;
            P/=Nr();
        }
        else{
            ++poz;
            P*=Nr();
        }
    }
    return P;
}
int Sum(){
    int S=Prod();
    while(v[poz]=='-'||v[poz]=='+'){
        if(v[poz]=='-'){
            ++poz;
            S-=Prod();
        }
        else{
            ++poz;
            S+=Prod();
        }
    }
    return S;
}
int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",v);
    printf("%d\n",Sum());
}