Cod sursa(job #2219111)

Utilizator RaresLiscanLiscan Rares RaresLiscan Data 7 iulie 2018 12:24:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;

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

int termen();
int factor();

char s[100005];
char *p = s;

int evaluare ()
{
    int r = termen();
    while (*p == '+' || *p == '-') {
        switch (*p) {
        case '+':
            p ++;
            r += termen();
            break;
        case '-':
            p ++;
            r -= termen();
            break;
        }
    }
    return r;
}

int termen ()
{
    int r = factor();
    while (*p == '*' || *p == '/') {
        switch (*p) {
        case '*':
            p ++;
            r *= factor();
            break;
        case '/':
            p ++;
            r /= factor();
            break;
        }
    }
    return r;
}

int factor ()
{
    int r = 0;
    if (*p == '(') {
        ++p;
        r = evaluare();
        p ++;
    }
    else {
        while (*p <= '9' && *p >= '0') r = r * 10 + *p - '0', p ++;
    }
    return r;
}

int main ()
{
    fin.get(s,100000);
    fout << evaluare();
    return 0;
}