Cod sursa(job #1904535)

Utilizator andreea4aAndreea Knopf andreea4a Data 5 martie 2017 16:55:19
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<stdio.h>
using namespace std;
char s[100002], *p=s;
long long termen();
long long factor();
long long eval(){
    long long r=termen();
    while(*p=='+'||*p=='-'){
        switch(*p){
        case '+':
            ++p;
            r+=termen();
            break;
        case '-':
            ++p;
            r-=termen();
            break;
        }
    }
    return r;
}
long long termen(){
    long long r=factor();
    while(*p=='*'||*p=='/'){
        switch(*p){
        case '*':
            ++p;
            r*=factor();
            break;
        case '/':
            ++p;
            r/=factor();
            break;
        }
    }
    return r;
}
long long factor(){
    long long r=0;
    if(*p=='('){
        ++p;
        r=eval();
        ++p;
    }
    else{
        while(*p>='0'&&*p<='9'){
            r=r*10+*p-'0';
            ++p;
        }
    }
    return r;
}
int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    scanf("%s",&s);
    printf("%I64d",eval());
    return 0;
}