Cod sursa(job #1416514)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 8 aprilie 2015 11:38:40
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#include <iostream>

using namespace std;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

char s[100001], *p = s;

long eval();
long termen();
long factor();

long eval()
{
    long r = termen();
    while(*p == '+' || *p == '-')
    {
        if (*p == '+')
            p++, r += termen();
        else if (*p == '-')
            p++, r -= termen();
    }
    return r;
}

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

long factor()
{
    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()
{
    f >> s;
    g << eval();
    return 0;
}