Cod sursa(job #1670462)

Utilizator tqmiSzasz Tamas tqmi Data 31 martie 2016 19:12:38
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
char exp[100005],*p=exp;
long long termen();
long long factor();
long long eval()
{
    long long nr=termen();
    if(*p=='+' || *p=='-')
    {
        if(*p=='+')
        {
            p++;
            nr+=termen();
        }
        else
        {
            p++;
            nr-=termen();
        }
    }
    return nr;
}
long long termen()
{
    long long nr=factor();
    if(*p=='*' || *p=='/')
    {
        if(*p=='*'){
            p++;
            nr*=factor();}
        else{
            p++;
            nr/=factor();}
    }
    return nr;
}
long long factor()
{
    long long nr=0;
    if(*p=='(')
    {
        ++p;
        nr=eval();
        ++p;
    }
    else
        while(*p>='0' && *p<='9')
        {
            nr= nr*10 + *p - '0';
            p++;
        }
    return nr;
}
int main()
{
    fin.getline(exp,100005);
    fout<<eval()<<"\n";
    return 0;
}