Cod sursa(job #171011)

Utilizator igorPirnau Igor igor Data 3 aprilie 2008 17:04:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<fstream.h>

ofstream g("evaluare.out");
#define lmax 100100

char s[lmax], *p=s;

int termen();
int factor();

void citire()
{
    ifstream f("evaluare.in");
    f.getline(s, lmax);
    f.close();
}

int eval()
{
    int x = termen();
    while( *p == '+' || *p == '-' )
        switch( *p ){
            case '+' : ++p; x += termen(); break;
            case '-' : ++p; x -= termen(); break;
        }
    return x;
}

int termen()
{
    int x = factor();
    while( *p == '*' || *p == '/' )
        switch( *p ){
            case '*' : ++p; x *= factor(); break;
            case '/' : ++p; x /= factor(); break;
        }
    return x;
}

int factor()
{
    int x = 0;
    if( *p == '(' ){
        ++p;
        x = eval ();
        ++p;
    }
        else{ 
            while ( *p >= '0' && *p <= '9' ){
                x = x * 10 + *p - '0';
                ++p;
            }
        }
    return x;
}      
int main()
{
    citire();
    g<<eval();
    g.close();
    return 0;
}