Cod sursa(job #1468235)

Utilizator shirazEliot Hugo shiraz Data 5 august 2015 16:04:43
Problema Evaluarea unei expresii Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb


#include <cstdio>

const long MAX = 100010;
char S[MAX], *p=S;

long termen();
long factor();
long eval(){
long r=termen();
if (*p=='+' || *p=='-'){
switch (*p){
    case '+':++p;r=r+termen();break;
    case '-':++p;r=r-termen();break;
    }}
return r;
}
long termen(){
    long r=factor();
    while (*p=='*' || *p=='/'){
switch (*p){
    case '*':++p;
    r=r*termen();
    break;
    case '/':++p;
    r=r/termen();
    break;}
    }
return r;
}
long factor(){
    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() {
   fgets(S,MAX, fopen("evaluare.in","r"));
   fprintf( fopen("evaluare.out","w"),"%lu",eval());
    return 0;
}