Cod sursa(job #2024774)

Utilizator PetrescuRobertPetrescu Robert Mihai PetrescuRobert Data 21 septembrie 2017 10:53:25
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("expresii.in");
ofstream fout("expresii.out");
char sir[100001], *p = sir;
long term();
long fact();
long eval()
{
    long r = term();
    while ( *p == '+' || *p == '-') {
        if(*p == '+') p++, r += term();
            else p++, r -= term();
    }
    return r;
}

long term()
{
    long r = fact();
    while (*p == '*' || *p == '/') {
        if (*p == '*') p++, r *= fact();
            else p++, r /= fact();
    }
    return r;
}

long fact()
{
    long r = 0;
    if ( *p == '(') {
            p++;
            r = eval();
            p++;
        }
        else {
            while ( *p >= '0' && *p <= '9') {
                r = r * 10 + *p - '0';
                p++;
            }
        }
    return r;
}
int main()
{
    fin.getline(sir,100001);
    fout << eval();
    return 0;
}