Cod sursa(job #2206487)

Utilizator ElizaTElla Rose ElizaT Data 22 mai 2018 19:15:35
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <bits/stdc++.h>

using namespace std;

int poz;
string s;

int expresie();

int numar() {
    int nr = 0;
    while (isdigit(s[poz])) {
        nr = nr * 10 + s[poz];
        poz++;
    }
    return nr;
}

int factor() {
    int val;
    if (s[poz] == '(') {
        poz++;
        val = expresie();
        poz++;
    }
    else
        val = numar();
    return val;
}

int termen() {
    int nr = factor();
    while (s[poz] == '/' || s[poz] == '*') {
        poz++;
        if (s[poz - 1] == '/')
            nr = nr / factor();
        else
            nr = nr * factor();
    }
    return nr;
}

int expresie() {
    int nr = termen();
    while (s[poz] == '+' || s[poz] == '-') {
        poz++;
    if (s[poz - 1] == '+')
        nr = nr + termen();
    else
        nr = nr - termen();
    }
    return nr;
}

int main()
{
    ifstream fin("evaluare.in");
    ofstream fout("evaluare.out");
    fin >> s;
    fout << expresie();
  return 0;
}