Cod sursa(job #847364)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 3 ianuarie 2013 19:35:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <fstream>
using namespace std;
ifstream f ( "evaluare.in" );
ofstream g ( "evaluare.out" );
int Number();
int eval();
int factor();
int termen();
#include <string>
string s;
int i, l;
int main()
{
    f >> s;
    l = s.length();
    g <<  eval();

    f.close();
    g.close();
    return 0;
}
int Number()
{
    int result = 0;

    while ( i < l && s[i] >= '0' && s[i] <= '9' )
        result = result * 10 + ( s[i++] - '0' );

    return result;
}
int factor()
{
    int result = 0;

    if ( s[i] == '(' )
    {
        ++i;
        result = eval();
        ++i;
    }
    else result = Number (  );

    return result;
}
int termen()
{
    int result = factor();

    while ( i < l && ( s[i] == '*' || s[i] == '/' ) )
    {
        ++i;

        if ( s[i-1] == '*' )
            result *= factor();
        else result /= factor();
    }

    return result;
}

int eval()
{
    int result = termen();

    while ( i < l && ( s[i] == '+' || s[i] == '-' ) )
    {
        ++i;

        if ( s[i-1] == '+' )
            result += termen();
        else
            result -= termen();
    }

    return result;
}