Cod sursa(job #2078997)

Utilizator FredyLup Lucia Fredy Data 30 noiembrie 2017 13:21:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

ifstream fin("evaluare.in");
ofstream fout("evaluare.out");

#define lim 100010
char ini[lim];
int n, dr;
int termen();
int factor();

int eval()
{
    int aux=termen();
    while (ini[dr]=='+' || ini[dr]=='-')
    {
        if (ini[dr]=='+')
            dr++, aux=aux+termen();
        if (ini[dr]=='-')
            dr++, aux=aux-termen();
    }
    return aux;
}

int termen()
{
    int aux=factor();
    while (ini[dr]=='/' || ini[dr]=='*')
    {
        if (ini[dr]=='/')
            dr++, aux/=factor();
        if (ini[dr]=='*')
            dr++, aux*=factor();
    }
    return aux;
}

int factor()
{
    int aux=0;
    if (ini[dr]=='(')
        dr++, aux=eval(), dr++;
    while (ini[dr]>='0' && ini[dr]<='9')
        aux = aux * 10 + ini[dr] - '0', dr++;
    return aux;
}


int main()
{
    fin>>ini;
    fout<<eval();

    fout.close();
    return 0;
}