Cod sursa(job #629254)

Utilizator VladberilaVladutz Vladberila Data 2 noiembrie 2011 23:36:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 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;   
}