Cod sursa(job #1971261)

Utilizator GinguIonutGinguIonut GinguIonut Data 20 aprilie 2017 06:19:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include <fstream>

#define nMax 100001

using namespace std;

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

int poz=1;
char sir[nMax];

int expresie();

int termen()
{
    int ans=0;
    if(sir[poz]=='(')
    {
        poz++;
        ans=expresie();
        poz++;
    }

    while(sir[poz]>='0' && sir[poz]<='9')
    {
        ans=ans*10+sir[poz]-'0';
        poz++;
    }

    return ans;
}

int factor()
{
    int ans=termen();
    while(sir[poz]=='*' || sir[poz]=='/')
    {
        if(sir[poz]=='*')
        {
            poz++;
            ans*=termen();
        }
        else
        {
            poz++;
            ans/=termen();
        }
    }

    return ans;
}

int expresie()
{
    int ans=factor();
    while(sir[poz]=='+' || sir[poz]=='-')
    {
        if(sir[poz]=='+')
        {
            poz++;
            ans+=factor();
        }
        else
        {
            poz++;
            ans-=factor();
        }
    }

    return ans;
}

int main()
{
    fin>>sir+1;
    fout<<expresie();
}