Cod sursa(job #1453745)

Utilizator CollermanAndrei Amariei Collerman Data 24 iunie 2015 15:54:01
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include<fstream>
#include<cstring>
using namespace std;
ofstream fout("evaluare.out");
ifstream fin("evaluare.in");
const long MMAX = 100002;

char exp[MMAX], *p = exp;

long termen();

long subexp()
{
    long sol = 0;

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

    return sol;
}

long factor()
{
    long sol = subexp();

    while(*p == '*' || *p == '/') {
        if(*p == '*') {
             p++;
             sol *= subexp();
        }
        if(*p == '/') {
             p++;
             sol /= subexp();
        }
    }

    return sol;
}

long termen()
{
    long sol = factor();

    while(*p == '+' || *p == '-') {
        if(*p == '+') {
             p++;
             sol += factor();
        }
        if(*p == '-') {
             p++;
             sol -= factor();
        }
    }

    return sol;
}

int main()
{
    fin >> exp;
    fout << termen();

    fin.close();
    fout.close();
    return 0;
}