Cod sursa(job #1863055)

Utilizator zdavid112zIon David-Gabriel zdavid112z Data 30 ianuarie 2017 17:05:35
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <cstdio>
#include <cstdlib>

using namespace std;

char sir[100003];
char* s;

int calc();

int matoi()
{
    int rez = 0;
    for(; *s >= '0' && *s <= '9'; s++)
        rez = rez * 10 + *s - '0';
    return rez;
}

int factor()
{
    int r;
    if(*s == '(')
    {
        s++;
        r = calc();
        s++;
    }
    else r = matoi();
    return r;
}

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

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

int main()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    scanf("%s", sir);
    s = sir;
    int rez = calc();
    printf("%d", rez);
    return 0;
}