Cod sursa(job #1247444)

Utilizator Athena99Anghel Anca Athena99 Data 22 octombrie 2014 20:41:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <string>

using namespace std;

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

int solve();

string s;
string::iterator it;

int factor(  ) {
    int res= 0;
    if ( *it=='(' ) ++it, res= solve(), ++it;
    else {
        for ( ; *it>='0' && *it<='9'; ++it ) {
            res= res*10+*it-'0';
        }
    }

    return res;
}

int termen(  ) {
    int res= factor();
    while ( *it=='*' || *it=='/' ) {
        if ( *it=='*' ) ++it, res*= factor();
        else ++it, res/= factor();
    }

    return res;
}

int solve(  ) {
    int res= termen();
    for ( ; *it=='+' || *it=='-'; ) {
        if ( *it=='+' ) ++it, res+= termen();
        else ++it, res-= termen();
    }

    return res;
}

int main(  ) {
    fin>>s;

    it= s.begin();
    fout<<solve()<<"\n";

    return 0;
}