Cod sursa(job #1866605)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 3 februarie 2017 12:57:54
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("evaluare.in");
ofstream g ("evaluare.out");
char s;
int eval();
int termen();
int factor();
int eval()
{
    int r = termen();
    while (s == '+' || s == '-')
    {
        switch (s)
        {
        case '+':
            f.get (s);
            r += termen();
            break;
        case '-':
            f.get (s);
            r -= termen();
            break;
        }
    }
    return r;
}
int termen()
{
    int r = factor();
    while (s == '*' || s == '/')
    {
        switch (s)
        {
        case '*':
            f.get (s);
            r *= factor();
            break;
        case '/':
            f.get (s);
            r /= factor();
            break;
        }
    }
    return r;
}
int factor()
{
    int r = 0;
    if (s == '(')
    {
        f.get (s);
        r = eval();
        f.get (s);
    }
    else
    {
        while (s >= '0' && s <= '9')
        {
            r = r * 10 + s - '0';
            f.get (s);
        }
    }
    return r;
}
int main()
{
    f.get (s);
    g << eval();
    return 0;
}