Cod sursa(job #1903167)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 5 martie 2017 00:16:18
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
#include <cstdlib>
using namespace std;

char c[100001], *p=c;
int termen();
int fact();
int eval()
{
    int r=termen();
    while (*p=='+' || *p=='-'){
        if (*p=='+'){
            ++p;
            r+=termen();
        }
        else {
            ++p;
            r-=termen();
        }
    }
    return r;
}
int termen()
{
    int r=fact();
    while (*p=='*' || *p=='/'){
        if (*p=='*'){
            ++p;
            r*=fact();
        }
        else{
            ++p;
            r/=fact();
        }
    }
    return r;
}
int fact()
{
    int 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);

    gets(c);
    printf("%d", eval());
    return 0;

}