Cod sursa(job #248580)

Utilizator StigmaSimina Pitur Stigma Data 26 ianuarie 2009 01:07:57
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <iostream.h>
#include <fstream.h>

ifstream fin("expresie.in");
ofstream fout("expresie.out");

char s[10000],*p=s;

long eval();
long termen();
long factor();


int main()
{fin>>s;
fout<<eval();
fout.close();

return 0;
 }



long eval()
{long x;

 x=termen();
 while (*p=='+' || *p=='-')
   if (*p=='+')
    {++p;
     x+=termen();
    }
   else
    {++p;
    x-=termen();
    }
 return x;
}


long termen()
{long x;
x=factor();

while (*p=='*' || *p=='/')
   if (*p=='*')
    {++p;
     x=x*factor();
    }
   else
    {++p;
    x=x/factor();
    }
 return x;
}


long factor()
{long x=0;

   if (*p=='(')
    {++p;
     x=eval();
     ++p;
    }
   else
      while (*p>='0' && *p<='9')
      {x=x*10+(*p-'0');
      ++p;
      }

 return x;
}