Cod sursa(job #2333555)

Utilizator SemetgTemes George Semetg Data 1 februarie 2019 13:58:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>
#define FILE_NAME "evaluare"
using namespace std;

ifstream in (FILE_NAME".in");
ofstream out (FILE_NAME".out");

char s[100005];
char* p;

int expresie();

int factor() {
    int r = 0;
    
    if (*p == '(') {
        ++p;
        r = expresie();
        ++p;
    } else {
        while (isdigit(*p))
            r = r * 10 + *p++ - '0';
    }
    
    return r;
}

int termen() {
    int r = factor();
    
    while (*p == '*' || *p == '/')
        if (*p++ == '*')
            r *= factor();
        else
            r /= factor();
    
    return r;
}

int expresie() {
    int r = termen();
    
    while (*p == '+' || *p == '-')
        if (*p++ == '+')
            r += termen();
        else
            r -= termen();
    
    return r;
}

int main() {
    in >> s;
    p = s;
    
    out << expresie();
}