Cod sursa(job #2257032)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 9 octombrie 2018 16:11:04
Problema Evaluarea unei expresii Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.16 kb
#include <fstream>

using namespace std;
ifstream f("evaluare.in");
ofstream g("evaluare.out");
char s[1000010];
int n,i,nr;
unsigned long long eval();
unsigned long long factor();
unsigned long long termen();
unsigned long long eval()
{
    unsigned long long r=termen();
    while(s[nr]=='+' || s[nr]=='-')
    {
        if(s[nr]=='+')
        {
            nr++;
            r+=termen();
        }
        else
        {
            nr++;
            r-=termen();
        }
    }
    return r;
}
unsigned long long termen()
{
    unsigned long long r=factor();
    while(s[nr]=='*' || s[nr]=='/')
    {
        if(s[nr]=='*')
        {
            nr++;
            r*=factor();
        }
        else
        {
            nr++;
            r/=factor();
        }
    }
    return r;
}
unsigned long long factor()
{
    unsigned long long r=0;
    if(s[nr]=='(')
    {
        nr++;
        r=eval();
        nr++;
    }
    while(s[nr]>='0' && s[nr]<='9')
    {
        r=r*10+(s[nr]-'0');
        nr++;
    }
    return r;
}
int main()
{
    f.getline(s,1000010);
    nr=0;
    g<<eval()<<'\n';
    return 0;
}