Cod sursa(job #1908128)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 6 martie 2017 22:53:22
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <fstream>
#include <cstring>
#define VAL 100005

using namespace std;

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

char s[VAL], *P=s;

int evaluare();
int termen();
int factor();

int evaluare()
{
    int nr=termen();
    while (*P=='+' || *P=='-')
    {
        if (*P=='+')
        {
            P++;
            nr+=termen();
        }
        if (*P=='-')
        {
            P++;
            nr-=termen();
        }
    }
    return nr;
}

int termen()
{
    int nr=factor();
    while (*P=='*' || *P=='/')
    {
        if (*P=='*')
        {
            P++;
            nr*=factor();
        }
        if (*P=='/')
        {
            P++;
            nr/=factor();
        }
    }
    return nr;
}

int factor()
{
    int nr=0;
    if (*P=='(')
    {
        P++;
        nr=evaluare();
        P++;
    }
    else
    {
        while (*P>='0' && *P<='9')
        {
            nr*=10;
            nr+=*P-'0';
        }
    }
    return nr;
}

int main()
{
    fin >> s;
    fout << s;
    fout << evaluare();
    fin.close();
    fout.close();
    return 0;
}