Cod sursa(job #1659489)

Utilizator theodor.moroianuTheodor Moroianu theodor.moroianu Data 22 martie 2016 11:51:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#include <cstring>
using namespace std;

int expresie();
int produs();
int getnr();
char v[100010];
int c = 0;

int main()
{
    ifstream in("evaluare.in");
    in >> v;
    v[strlen(v)] = ')';
    ofstream out("evaluare.out");
    out << expresie();
    return 0;
}

int produs() {
    int n = getnr();
    char op;
    while (v[c] == '*' || v[c] == '/') {
        op = v[c++];
        if (op == '*') {
            n *= getnr();
        }
        else
            n /= getnr();
    }
    return n;
}

int getnr() {
    if (v[c] == '(') {
        c++;
        return expresie();
    }
    int n = 0;
    while ('0' <= v[c] && v[c] <= '9') {
        n *= 10;
        n += v[c] - '0';
        c++;
    }
    return n;
}

int expresie() {
   int n = produs(), m;
    char op;
    while (v[c] != ')') {
        op = v[c++];
        m = produs();
        if (op == '+') {
            n += m;
        }
        else {
            n -= m;
        }
    }
    c++;
    return n;
}