Cod sursa(job #1437876)

Utilizator BLz0rDospra Cristian BLz0r Data 18 mai 2015 19:03:08
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
#include <algorithm>
#include <string>
using namespace std;

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

string S;
string :: iterator it;

int Adun();
int Inm();
int Termen();

int Adun (){
    int ret = Inm();

    while ( *it == '+' || *it == '-' ){
        if ( *it == '+' ){
            it++;
            ret += Inm();
        }
        else{
            it++;
            ret -= Inm();
        }
    }
    return ret;
}

int Inm (){
    int ret = Termen();

    while ( *it == '*' || *it == '/' ){
        if ( *it == '*' ){
            it++;
            ret *= Termen();
        }
        else{
            it++;
            ret /= Termen();
        }
    }
    return ret;
}

int Termen (){
    int ret;

    if ( *it == '(' ){
        it++;
        ret = Adun();
        it++;
    }
    else{
        ret = 0;
        while ( *it >= '0' && *it <= '9' ){
            ret = ret * 10 + ( *it - '0' );
            it++;
        }
    }
    return ret;
}

int main(){

    fin >> S;

    it = S.begin();

    fout << Adun();

    return 0;
}