Cod sursa(job #1077813)

Utilizator Fulga.AlinFulga Alin Fulga.Alin Data 11 ianuarie 2014 17:59:33
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <fstream>
//#include <iostream>
using namespace std;
ifstream cin( "evaluare.in" );
ofstream cout( "evaluare.out" );

char s[ 100001 ], *p;

int termen();
int factor();

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

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

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

int main()
{
    cin >> s;
    p = s;
    cout << evaluare();
    return 0;
}