Cod sursa(job #1229722)

Utilizator afkidStancioiu Nicu Razvan afkid Data 17 septembrie 2014 23:35:42
Problema Evaluarea unei expresii Scor 10
Compilator c Status done
Runda Arhiva educationala Marime 1.05 kb
#include <stdio.h>
#include <stdlib.h>


char *p;
int evaluate();
int term();
int fact();


int evaluate()
{
    int x=term();
    if(*p=='-')
    {
        p++;
        x-=term();
    }
    else if(*p=='+')
    {
        p++;
        x+=term();
    }
    return x;
}
int term()
{

    int number=fact();
    if(*p=='*')
    {
        p++;
        number*=fact();
    }
    else if(*p=='/')
    {
        p++;
        number/=fact();
    }
    return number;
}
int fact()
{
    int number2=0;
    if(*p=='(')
    {
        p++;
        number2+=evaluate();
        p++;
    }
    else while(*p>='0'&&*p<='9')
        {
            number2=number2*10+*p-'0';
            p++;
        }
    return number2;
}

void arithmetic_eval(char *expression)
{
    p=expression;
    printf("%d\n",evaluate());
}

int main()
{
    freopen("evaluare.in","r",stdin);
    freopen("evaluare.out","w",stdout);
    char expression[200000];
    scanf("%s",&expression);
    arithmetic_eval(expression);
    return 0;
}