Cod sursa(job #2374309)

Utilizator GeorgeBoboc2003George Boboc GeorgeBoboc2003 Data 7 martie 2019 17:54:51
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
#include <stdio.h>
#define N 100005

char s[N], *p = s ;
using namespace std ;

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

int termen() ;
int factor() ;

int eval()
{
    int r = termen() ;
    while ( *p == '+' || *p == '-' ){
        switch ( *p ){

            case '+' : ++p ; r += termen() ; break ;
            case '-' : ++p ; r -= termen() ; break ;
        }
    }
    return r ;
}

int termen()
{
    int r = factor() ;
    while ( *p == '*' || *p == '/' ) {
        switch ( *p ) {

            case '*' : ++p ; r *= factor() ; break ;
            case '/' : ++p ; r /= factor() ; break ;
        }
    }
    return r ;
}

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

}

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