Cod sursa(job #2011077)

Utilizator roitainNiculae Cristian roitain Data 15 august 2017 01:18:45
Problema Evaluarea unei expresii Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.33 kb
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;

char s[101101];
char *p = s;

int factor();
int element();

int operatie(){
    int result = factor();
    while(*p!=NULL && (*p == '+' || *p == '-')){
        switch(*p){
            case '+':    p++;
                    result += factor();
                    break;
            case '-':    p++;
                    result -= factor();
                    break;
        }
    }
    return result;
}

int factor(){
    int result = element();
    while(*p!=NULL && (*p == '*' || *p == '/')){
        switch(*p){
            case '*':    p++;
                    result *= element();
                    break;
            case '/':    p++;
                    result /= element();
                    break;
        }
    }
    return result;
}

int element(){
    int result;
    if(*p == '('){
        p++;
        result = operatie();
        p++;

    }else{
        int el = 0;
        while(*p!=NULL && strchr("123456790",*p)!=NULL){
            el = el*10 + (*p - '0');
            p++;
        }
        result = el;
    }

    return result;
}

int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    cin.getline(s,101101);
    cout<<operatie();
    return 0;
}