Cod sursa(job #1831562)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 18 decembrie 2016 12:13:09
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
using namespace std;
long long n, k, i, nr, secv;
long long x, s;
char c[100001], *p=c;

int termen();
int fact();

int eval ()
{
    int r=termen();
    while (*p=='+' || *p=='-'){
        if (*p=='+') p++, r=r+termen();
        else p++, r=r-termen();
    }
    return r;
}
int termen()
{
    int r=fact();
    while (*p=='*' || *p=='/'){
        if (*p=='*') p++, r=r*fact();
        else p++, r=r/fact();
    }
    return r;
}
int fact ()
{
    int r=0;
    if (*p=='(')
            p++, r=eval(), p++;
    else while (*p>='0' && *p<='9') r=r*10+(*p-48), p++;
    return r;
}

int main ()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    gets(c);
    printf("%d", eval());
}