Cod sursa(job #796719)

Utilizator danalex97Dan H Alexandru danalex97 Data 12 octombrie 2012 11:49:11
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
using namespace std;

const int Nmax = 100010;

char Str[ Nmax ];
char *p = Str;

ifstream F("evaluare.in");
ofstream G("evaluare.out");

int Fact();
int Term();
int Eval();

int Fact()
{
    int Rez = 0;
    if ( *p == '(' )
    {
        ++p;
        Rez = Eval();
        ++p;
    }
    else
    {
        for ( ; *p >= '0' && *p <= '9' ; ++p )
            Rez = Rez * 10 + *p - '0';
    }
    return Rez;
}

int Term()
{
    int Rez = Fact();
    while ( *p == '*' || *p == '/' )
        if ( *p == '*' )
            ++p , Rez *= Term() ;
        else
            ++p , Rez /= Term();
    return Rez;
}

int Eval()
{
    int Rez = Term();
    while ( *p == '+' || *p == '-' )
        if ( *p == '+' )
            ++p , Rez += Term() ;
        else
            ++p , Rez -= Term();
    return Rez;
}

int main( void )
{
    F.getline( Str , Nmax , '\n' );
    G<<Eval()<<'\n';
    return 0;
}