Cod sursa(job #304159)

Utilizator firewizardLucian Dobre firewizard Data 11 aprilie 2009 01:46:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>
char *p,sir[100005];
int termen();
int factor();
int eval();
int main()
{
    freopen ("evaluare.in","r",stdin);
    freopen ("evaluare.out","w",stdout);
    gets(sir);
    p=sir;
    printf("%d",eval());
    return 0;
}
int eval(){
    int t=termen();
    while (*p=='+'||*p=='-')
          if (*p=='+'){
             ++p;
             t+=termen();
             }
          else 
          {
          ++p;
          t-=termen();
          }
return t;
}
int termen ()
{
    int f=factor();
    while (*p=='*'||*p=='/')
          if (*p=='*'){
             p++;
             f*=factor();
             }
          else
          {
          ++p;
          f/=factor();
          }
return f;
}
int factor()
{
    int op=0;
    if (*p=='('){
       ++p;
       op=eval();
       ++p;
       }
    else
    {
    while (*p>='0'&&*p<='9')
          op=op*10+*p++-'0';
    }
return op;
}