Cod sursa(job #170985)

Utilizator igorPirnau Igor igor Data 3 aprilie 2008 16:48:59
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream.h>

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

char s[lmax], *p=s;

long termen();
long factor();

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

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

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

long factor()
{
    long 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;
}