Cod sursa(job #256828)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 12 februarie 2009 11:49:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include<algorithm>
using namespace std;
char s[100001],*p=s;
long termen();
long factor();
long eval(){
    long r=termen();
    while(*p=='+'||*p=='-')
        switch(*p){
            case '+':
                ++p;
                r+=termen();
                break;
            case '-':
                ++p;
                r-=termen();
                break;}
    return r;}
long termen(){
    long r=factor();
    while(*p=='*'||*p=='/')
        switch(*p){
            case '*':
                ++p;
                r*=factor();
                break;
            case '/':
                ++p;
                r/=factor();
                break;}
    return r;}
long factor(){
    long r;
    if(*p=='('){
        ++p;
        r=eval();
        ++p;}
    else
        for(r=0; *p>='0'&&*p<='9'; r=r*10+*p-'0',++p);
    return r;}
int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s);
    printf("%ld",eval());
    return 0;}