Cod sursa(job #290787)

Utilizator ConsstantinTabacu Raul Consstantin Data 28 martie 2009 18:47:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#include<string.h>


char op[4][4]={"+-","*/","^",""},s[100100],*p=s;
int eval(int a,int b,char o){
switch (o){
        case '+':return a+b;
        case '-':return a-b;
        case '*':return a*b;
        case '/':return a/b;
        }
}

int expr(int lvl){
int x,y;

if(lvl==2)
        if(*p=='(')
                p++,x=expr(0),p++;
        else
        for(x=0;'0'<=*p&&*p<='9';p++)
                x=x*10+*p-'0';
else
for(x=expr(lvl+1);strchr(op[lvl],*p);x=y)
        y=eval(x,expr(lvl+1),*p++);
return x;}

int main(){

freopen("evaluare.out","w",stdout);
fgets(s,100100,freopen("evaluare.in","r",stdin));

printf("%d",expr(0));

return 0;}