Cod sursa(job #686909)

Utilizator GrimpowRadu Andrei Grimpow Data 21 februarie 2012 22:29:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char *s = new char[100001];

long termen();
long factor();

long eval()
{
     long t=termen();
     while(*s=='+' || *s=='-')
     {
          switch(*s)
          {
               case '+': ++s; t+=termen();break;
               case '-': ++s; t-=termen();break;
          }
     }
     return t;
}

long termen()
{
     long t=factor();
     while(*s=='*' || *s=='/')
     {
          switch(*s)
          {
               case '*': ++s; t*=factor();break;
               case '/': ++s; t/=factor();break;
          }
     }
     return t;
}

long factor()
{
     long r=0;
     if(*s=='(')
     {
          ++s;
          r=eval();
          ++s;
     }
     else
     {
        while(*s>='0' && *s<='9')
        {
             r=r*10 + *s - '0';
             ++s;
        }
     }
     return r;
}
int main()
{
    f>>s;
    g<<eval();
    f.close();
    g.close();
    return 0;
}