Cod sursa(job #1266240)

Utilizator GeorgianBaditaBadita Marin-Georgian GeorgianBadita Data 18 noiembrie 2014 15:24:03
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <cstdio>
#include <cstring>
using namespace std;

char *p, s[2000001];
int eval();
int factor();
int termen();
int main()
{
    freopen("evaluare.in", "r", stdin);
    freopen("evaluare.out", "w", stdout);
    gets(s);
    p = s;
  int  n = eval();
    printf("%d\n", n);
}
int eval()
{
    int r;
    r = termen();
    while(*p == '+' || *p == '-')
    {
        if(*p == '+') {p++; r+=termen(); break;}
        else if(*p == '-') {p++; r-= termen(); break;}
    }
    return r;
}
int termen()
{
    int r;
    r = factor();
    while(*p == '*' || *p == '/')
    {
        if(*p == '*') {p++; r *= factor(); break;}
        else if(*p == '/') {p ++; r /= factor(); break;}
    }
    return r;
}
int factor()
{
    int r;
    r = 0;
    if(*p == '(')
    {
        p ++;
        r = eval();
        ++p;
    }
    else
    {
        while('0' <= *p && *p <= '9')
        {
            r *= 10;
            r += (int)*p - '0';
            ++p;
        }
    }
    return r;
}