Cod sursa(job #1338222)

Utilizator horiainfoTurcuman Horia horiainfo Data 9 februarie 2015 21:16:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <cstring>
#define NR 100002
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char a[NR];
int poz,d;
int eval();

int numar()
{
    long long n=0;
    if(a[poz]=='(')
    {
        poz++;
        n=eval();
    }
    else
        while(a[poz]>='0' && a[poz]<='9')
        {
            n=n*10+a[poz]-'0';
            poz++;
        }
    return n;
}
int calcul()
{
    long long t=numar();

    while(a[poz]=='*' || a[poz]=='/')
    {
        if(a[poz]=='*')
            {poz++; t=t*numar();}
        else
        if(a[poz]=='/')
            {poz++; t=t/numar();}
    }
    return t;
}
int eval()
{
    long long s=calcul();

    while(a[poz]=='+' || a[poz]=='-')
    {
        if(a[poz]=='+')
        {
            poz++;
            s=s+calcul();
        }
        else
        if(a[poz]=='-')
        {
            poz++;
            s=s-calcul();
        }
    }
    poz++;
    return s;
}
int main()
{
    fin.getline(a,NR);
    d=strlen(a);
    fout<<eval()<<'\n';
    return 0;
}