Cod sursa(job #1678226)

Utilizator GreeDGlavan George Florian GreeD Data 7 aprilie 2016 09:46:24
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>

using namespace std;

char r[100001];
char* s=r;

long long termen();
long long factor();

long long eval(){
    long long r=termen();
    while(s[0]=='+' || s[0]=='-'){
    switch(s[0]){
        case '+':
            s++;
            r+=termen();
            break;
        case '-':
            s++;
            r-=termen();
    }
    }
    return r;
}

long long termen(){
    long long r=factor();
    while(s[0]=='*' || s[0]=='/'){
    switch(s[0]){
        case '*':
            s++;
            r*=factor();
            break;
        case '/':
            s++;
            r/=factor();
            break;
    }
    }
    return r;
}

long long factor(){
    long long r=0;
    if(s[0]=='('){
        s++;
        r=eval();
        s++;
    }else{
        while(s[0]>='0' && s[0]<='9'){
            r=r*10+s[0]-'0';
            s++;
        }
    }
    return r;
}


int main()
{
    cin>>s;
    cout<<eval();
    return 0;
}