Cod sursa(job #2837440)

Utilizator LucaSimionovLuca Mihai Simionov LucaSimionov Data 22 ianuarie 2022 10:39:41
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;

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

char s[100050], *p;
int r;
int eval();
int termen();
int factor();

int eval ()
{
    int r;
    r = termen();

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

    return r;
}

int termen ()
{
    int r;
    r = factor();

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

    return r;
}

int factor ()
{
    int r = 0;

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

    return r;
}

int main()
{
    f.getline (s, 100000);
    p = s;
    g << eval();
    return 0;
}