Cod sursa(job #627289)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 29 octombrie 2011 15:49:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
char s[100001],*p=s;
int termen();
int factor();

int eval(){
    int v=termen();
    while(*p=='+'||*p=='-'){
        if(*p=='+'){p++; v+=termen(); } else {p++; v-=termen(); } }
    return v;
}

int termen(){
    int v=factor();
    while(*p=='*'||*p=='/'){
        if(*p=='*'){p++; v*=factor(); } else {p++; v/=factor(); } }
    return v;
}

int factor(){
    int v=0;
    if(*p=='('){
        p++; v=eval(); p++; } else {
        while(*p>='0'&&*p<='9'){v=(v*10)+*p-'0';p++;}; }
    return v;
}

int main(){
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
        gets(s);
        printf("%d\n",eval());
}