Cod sursa(job #2372018)

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