Cod sursa(job #1622395)

Utilizator PhilipDumitruPhilip Dumitru PhilipDumitru Data 1 martie 2016 11:21:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.32 kb
#include <fstream>
#include <cstdio>

using namespace std;

char buf[100002];
char *cptr;

int suma();
int produs();

int readNumber()
{
    int res;
    if (*cptr == '(')
    {
        ++cptr;
        res = suma();
        ++cptr;
    } else {
        res = (*cptr++) - '0';
        while (*cptr >= '0' && *cptr <= '9')
        {
            res = res * 10 + (*cptr++) - '0';
        }
    }
    return res;
}

int produs()
{
    int res = readNumber();
    while ((*cptr == '*') || (*cptr == '/'))
    {
        if (*cptr == '*')
        {
            cptr++;
            res *= readNumber();
        }
        else if (*cptr == '/')
        {
            cptr++;
            res /= readNumber();
        }
    }

    return res;
}

int suma()
{
    int res = produs();
    while ((*cptr == '+') || (*cptr == '-'))
    {
        if (*cptr == '-')
        {
            cptr++;
            res -= produs();
        }
        else if (*cptr == '+')
        {
            cptr++;
            res += produs();
        }
    }

    return res;
}

int main()
{
    FILE * fin = fopen("evaluare.in", "r");
    FILE * fout = fopen("evaluare.out", "w");

    cptr = fgets(buf, 100002, fin);
    fprintf(fout, "%d", suma());

    fclose(fin);
    fclose(fout);
    return 0;
}