Cod sursa(job #900224)

Utilizator CaligulaGAIVS IVLIVS CAESAR AVGVSTVS GERMANICVS Caligula Data 28 februarie 2013 18:20:48
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include<fstream>
using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[100010],*p=s;
int termen();
int factor();
int eval()
{
    int r=termen();
    if (*p=='+' || *p=='-')
        {
            switch (*p)
                {
                    case '+':
                        ++p;
                        r+=termen();
                        break;
                    case '-':
                        ++p;
                        r-=termen();
                        break;
                }
        }
    return r;
}
int termen()
{
    int r=factor();
    if (*p=='*' || *p=='/')
        {
            switch (*p)
                {
                    case '*':
                        ++p;
                        r*=factor();
                        break;
                    case '/':
                        ++p;
                        r/=factor();
                        break;
                }
        }
    return r;
}
int factor()
{
    int r=0;
    if (*p=='(')
        {
            ++p;
            r=eval();
            ++p;
        }
    else
        {
            for (;'0'<=*p && *p<='9';++p)
                r=r*10+*p-'0';
        }
    return r;
}
int main()
{
    f.get(s,100010);
    g<<eval()<<'\n';
    return 0;
}