Cod sursa(job #2375529)

Utilizator WayronUrsu Ianis-Vlad Wayron Data 8 martie 2019 10:12:16
Problema Evaluarea unei expresii Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <bits/stdc++.h>
using namespace std;

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

int step = 0;
string expresie;

int eval();

int factor(){
    int r = 0;

    if(expresie[step]=='('){
        step++;
        r = eval();
        step++;
    }
    else{
        while(expresie[step]<='9' && expresie[step]>='0'){
            r = r*10 + expresie[step] - '0';
            step++;
        }
    }

    return r;
}

int termen(){
    int r = factor();

    while(expresie[step]=='*' || expresie[step]=='/'){
        switch(expresie[step]){
        case '*':
            step++;
            r *= factor();
            break;
        case '/':
            step++;
            r /= factor();

        }
    }

    return r;
}

int eval(){
    int r = termen();

    while(expresie[step]=='+' || expresie[step]=='-'){
        switch(expresie[step]){
        case '+':
            step++;
            r+=eval();
            break;

        case '-':
            step++;
            r-=eval();
            break;
        }
    }

    return r;

}
int main()
{

    getline(fin, expresie, '\n');
    fout<<eval();

}