Cod sursa(job #2253292)

Utilizator pinteastefanPintea Teodor Stefan pinteastefan Data 3 octombrie 2018 20:54:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

string s;
int i = 0;
int f2();
int f3();

int f1(){
    int r = f2();
    while (s[i] == '+' or s[i] == '-'){
        if(s[i] == '+'){
            ++i;
            r += f2();
        }
        if (s[i] == '-'){
            ++i;
            r -= f2();
        }
    }
    return r;
}

int f2(){
    int r = f3();
    while (s[i] == '*' or s[i] == '/'){
        if(s[i] == '*'){
            ++i;
             r *= f3();
        }
        if(s[i] == '/'){
            ++i;
             r /= f3();
        }
    }
    return r;
}

int f3(){
    int r= 0;
    if (s[i] == '('){
        ++i;
        r = f1();
        ++i;
    }
    else {
        while(s[i] >= '0' && s[i] <= '9'){
            r = r  * 10 + (s[i] - '0');
            ++i;
        }
    }
    return r;
}
int main() {
    ifstream f("evaluare.in");
    ofstream g("evaluare.out");
    f >> s;
    s += '#';
    g << f1();
    return 0;
}