Cod sursa(job #3212307)

Utilizator maiaauUngureanu Maia maiaau Data 11 martie 2024 15:57:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = pair<int,int>;
#define pb push_back

const int N = 2e6+5;

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

string s;
int p = 0, factor(), termen(), suma();

int main()
{
    fin >> s;
    fout << suma();

    return 0;
}
int suma() {
    int rez = termen();
    while (s[p] == '+' || s[p] == '-'){
        p++;
        if (s[p-1] == '+') rez = rez + termen();
        else rez = rez - termen();
    }

    return rez;
}
int termen() {
    int rez = factor();
    while (s[p] == '*' || s[p] == '/'){
        p++;
        if (s[p-1] == '*') rez = rez * factor();
        else rez = rez / factor();
    }
    return rez;
}
int factor(){
    if (s[p] == '('){
        p++;
        int rez = suma();
        p++;
        return rez;
    }
    int rez = 0;
    while ('0' <= s[p] && s[p] <= '9'){
        rez = rez * 10 + s[p] - '0';
        p++;
    }
    return rez;
}