Cod sursa(job #2175293)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 16 martie 2018 16:28:47
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;

char s[100001] ;
int i ;

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

int termen() ;
int factor() ;

int eval()
{
    int r = termen() ;
    while ( s[i] == '+' || s[i] == '-' )
    {
        if ( s[i] == '+' )
        {
            i++ ;
            r = r+termen() ;
        }
        else
        {
            i++ ;
            r = r-termen() ;
        }
    }
    return r;
}

int termen()
{
    int r = factor() ;
    while ( s[i] == '*' || s[i] == '/' )
    {
        if ( s[i] == '*' )
        {
            i++ ;
            r = r*factor() ;
        }
        else
        {
            i++ ;
            r = r/factor() ;
        }
    }
    return r;
}

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

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