Cod sursa(job #1005367)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 4 octombrie 2013 21:32:31
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include<fstream>

using namespace std;

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

char sir[100005];
int ind;

int Eval();
int Termen();
int Factor();

int Numar()
{
    int x=0;
    while('0'<= sir[ind] && sir[ind]<='9')
    {
        x=x*10+sir[ind]-'0';
        ind++;
    }
    return x;
}

inline int Factor()
{
    int x;
    if(sir[ind]=='(')
    {
        ind++;
        x=Eval();
        ind++;
    }
    else
        x=Numar();
    return x;
}

inline int Termen()
{
    int x;
    x=Factor();
    while(sir[ind]=='*' || sir[ind]=='/')
    {
        if(sir[ind++]=='*')
            x*=Factor();
        else
            x/=Factor();
    }
    return  x;
}
inline int Eval()
{
    int x;
    x=Termen();
    while(sir[ind]=='+' || sir[ind]=='-')
    {
        if(sir[ind++]=='+')
            x+=Termen();
        else
            x-=Termen();
    }
    return x;
}
int main()
{
    fin.getline(sir,100005);
    fout<<Eval()<<"\n";
    fin.close();
    fout.close();
    return 0;
}