Cod sursa(job #303840)

Utilizator cristikIvan Cristian cristik Data 10 aprilie 2009 13:56:13
Problema Evaluarea unei expresii Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <string.h>
#define LMAX 2
#define MAX 100010
char op[4][4]={"+-","*/","^",""};
char s[MAX],*p=s;
int eval(int a,int b,char op)
{
    int t;
    switch(op)
    {
        case '+': return a+b;
        case '-': return a-b;
        case '*': return a*b;
        case '/': return a/b;
    }
}
int expresie(int lev)
{
    int x,y;
    if(lev=LMAX)
     if(*p=='(') { ++p; x=expresie(0); ++p;}
     else
      for(x=0; *p>='0' && *p<='9'; ++p)
        x=x*10+*p-'0';
    else
     for(x=expresie(lev+1); strchr(op[lev],*p); x=y)
      y=eval(x,expresie(lev+1),*p++);
    return x;
}
int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    gets(s);
    printf("%d",expresie(0));
    return 0;
}