Cod sursa(job #3209516)

Utilizator Ruxandra009Ruxandra Vasilescu Ruxandra009 Data 2 martie 2024 17:16:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

using namespace std;

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

int i = 0;
char a[100005];
int eval();
int termen();
int factor();

int eval()
{
    int rez = termen();
    while(a[i] == '-' || a[i] == '+')
        if(a[i ++] == '+')
            rez += termen();
        else
            rez -= termen();

    return rez;
}

int termen()
{
    int rez = factor();
    while(a[i] == '/' || a[i] == '*')
        if(a[i ++] == '*')
            rez *= factor();
        else
            rez /= factor();

    return rez;
}

int factor()
{
    int rez = 0;

    if(a[i] == '(')
        i ++, rez = eval(), i ++;

    else
        while(a[i] >= '0' && a[i] <= '9')
            rez = rez * 10 + (a[i ++] - '0');

    return rez;
}

int main()
{
    f >> a;
    g << eval();
    return 0;
}