Cod sursa(job #2038495)

Utilizator ciocirlanrCiocirlan Robert ciocirlanr Data 13 octombrie 2017 18:48:32
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");

char S[100009], *p = S;

int evaluare();

int factor(){

    int r;
    if(*p == '(') { ++p; r = evaluare(); ++p; }
    else{
        r = 0;
        while(*p >= '0' && *p <= '9') { r = r * 10 + *p - '0'; ++p; }
    }
    return r;
}

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

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

int main(){

    in >> S;
    out << evaluare();
    out.close();
    return 0;
}