Cod sursa(job #2701545)

Utilizator giotoPopescu Ioan gioto Data 31 ianuarie 2021 17:20:50
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>
using namespace std;

const int DIM = 1e5 + 5;

int termen();
int factor();
int getNumber();

int p = 0, n;
char s[DIM];
int termen() {
    int val = factor(); //a*b*c...*z+A*B*.../..*Z
    while (s[p] == '+' || s[p] == '-') {
        if (s[p] == '+') ++p, val = val + factor();
        else if (s[p] == '-') ++p, val = val - factor();
    }
    return val;
}

int factor() {
    int val = getNumber();
    while (s[p] == '*' || s[p] == '/') {
        if (s[p] == '*') ++p, val = val * getNumber();
        else if (s[p] == '/') ++p, val = val / getNumber();
    }
    return val;
}

int parsare() {
    int x = 0;
    while (s[p] >= '0' && s[p] <= '9') x = x * 10 + s[p++] - '0';
    return x;
}

int getNumber() {
    int x = 0;
    if (s[p] >= '0' && s[p] <= '9') x = parsare();
    else {++p; x = termen(); ++p;}
    return x;
}

int main() {
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);

    scanf("%s", s);
    n = strlen(s) - 1;
    int ans = termen();
    printf("%d", ans);
    return 0;
}