Cod sursa(job #1181807)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 3 mai 2014 19:10:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include<fstream>
#include<string>

using namespace std;

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

int i;
int expr(), termen();
string s;

int nr() {
    int p, sol = 0;
    p = 1;
    if ( s[ i ] == '-' ) {
        p = -1;
        ++ i;
    }
    if ( s[ i ] == '(' ) {
        ++ i;
        return p * expr();
    }
    while ( s[ i ] >= '0' && s[ i ] <= '9' ) {
        sol *= 10;
        sol += s[ i ] - '0';
        ++ i;
    }
    return p * sol;
}
int expr() {
    int sum;
    sum = termen();
    while( s[ i ] == '+' || s[ i ] == '-' ) {
        if ( s[ i ] == '+' ) {
            ++ i;
            sum += termen();
        } else {
            ++ i;
            sum -= termen();
        }
    }
    ++ i;
    return sum;
}
int termen() {
    int rez;
    rez = nr();
    while ( s[ i ] == '*' || s[ i ] == '/' ) {
        if ( s[ i ] == '*' ) {
            ++ i;
            rez *= nr();
        } else {
            ++ i;
            rez /= nr();
        }
    }
    return rez;
}
int main()
{
    fin>>s;
    i = 0;
    fout<<expr()<<'\n';
    fin.close();
    fout.close();
    return 0;
}