Cod sursa(job #2373043)

Utilizator BogdanRuleaBogdan Rulea BogdanRulea Data 7 martie 2019 11:57:11
Problema Evaluarea unei expresii Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
using namespace std;
#define MAX 10010
char s[MAX],*p=s;
long termen();
long factor();
long eval()
{
    long r=termen();
    while(*p=='+' || *p=='-')
    switch (*p)
    {
        case '+':
            ++p;
            r+=termen();
            break;
        case '-':
            ++p;
            r-=termen();
            break;
    }
    return r;
}
long termen()
{
    long r=factor();
    while(*p=='*' || *p=='/')
        switch(*p)
    {
    case '*' :
        ++p;
        r*=factor();
        break;
    case '/':
        ++p;
        r/=factor();
        break;
    }
    return r;
}
long factor()
{
    long r=0;
    if(*p=='(')
    {
        ++p;
        r=eval();
        ++p;
    }
    else
    {
        while(*p>='0' && *p<='9')
        {
            r=r*10+*p-'0';
            ++p;
        }

    }
    return r;
}
int main()
{
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin.get(s,MAX);
cout<<eval();
    return 0;
}