Cod sursa(job #603766)

Utilizator nervousNervous nervous Data 18 iulie 2011 16:39:04
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include <fstream>
#include <cstring>

#define X1 100001

using namespace std;

ifstream in;
ofstream out;

char text[100001];
int ind=0;

inline int crack1();
inline int crack2();
inline int crack3();

inline int crack1()
{
    int ret=crack2();

    while(text[ind]=='+'||text[ind]=='-')
    {
        if(text[ind]=='+')
        {
            ind++;
            ret+=crack2();
        }
        else
        {
            ind++;
            ret-=crack2();
        }
    }

    return ret;
}

inline int crack2()
{
    int ret=crack3();

    while(text[ind]=='*'||text[ind]=='/')
    {
        if(text[ind]=='*')
        {
            ind++;
            ret*=crack3();
        }
        else
        {
            ind++;
            ret/=crack3();
        }
    }

    return ret;
}

inline int crack3()
{
    int ret=0;

    if(text[ind]=='(')
    {
        ind++;
        ret=crack1();
        ind++;
    }
    else
    while(text[ind]<='9'&&'0'<=text[ind])
        ret=ret*10+text[ind++]-'0';

    return ret;
}

int main()
{
    in.open("evaluare.in");
    in>>text;
    in.close();

    out.open("evaluare.out");
    out<<crack1()<<'\n';
    out.close();

    return 0;
}