Cod sursa(job #1419416)

Utilizator Burbon13Burbon13 Burbon13 Data 15 aprilie 2015 16:19:07
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include <cstdio>

using namespace std;

const int mx = 100005 ;

char s[mx] , *p = s ;

int eval() ;
int termen() ;
int factor() ;

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

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

int factor()
{
    int rez = 0 ;
    if ( *p == '(' )
    {
        p ++ ;
        rez = eval() ;
        p ++ ;
    }
    else
        while ( *p <= '9' && *p >= '0' )
        {
            rez = rez * 10 + *p - 48 ;
            p ++ ;
        }
    return rez ;
}

int main()
{
    freopen( "evaluare.in" , "r" , stdin ) ;
    freopen( "evaluare.out" , "w" , stdout ) ;

    scanf( "%s" , s ) ;

    printf( "%d\n" , eval() ) ;

    return 0;
}