Cod sursa(job #726058)

Utilizator alexa_mihaltanMihaltan Alexandra alexa_mihaltan Data 26 martie 2012 23:37:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include<fstream>
#define dim 100001
using namespace std;
char sir[dim];int i=0;
int termen();
int factor();
void citire()
{
ifstream f("evaluare.in");
f.getline(sir, dim);
f.close();
}
int evaluare()
{
int x = termen();
while( (sir[i] == '+') or(sir[i] == '-'))
switch( sir[i] )
{
case '+' :
    ++i; x += termen();
    break;
case '-' :
    ++i; x -= termen();
    break;
}
return x;
}
int termen()
{
int x = factor();
while( (sir[i] == '*') or (sir[i] == '/') )
switch( sir[i] )
{
    case '*' :
         ++i;
         x *= factor();
         break;
    case '/' :
         ++i;
         x /= factor();
         break;
}
return x;
}
int factor()
{
int x = 0;
if( sir[i] == '(' )
{
++i;
x = evaluare ();
++i;
}
else
{
    while ( sir[i] >= '0' && sir[i] <= '9' )
    {
        x = x * 10 + sir[i] - '0';
        ++i;
    }
}
return x;
}
int main()
{
citire();
ofstream g("evaluare.out");
g<<evaluare();
g.close();
return 0;
}