Cod sursa(job #389236)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 1 februarie 2010 12:38:22
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<stdio.h>

char s[100004], *p=s;

long op1();
long op2();
long nr();

long op1()
{
	long r=op2();
	if(*p=='+')
	{
		++p;
		r+=op2();
	}
	else if(*p=='-')
	{
		++p;
		r-=op2();
	}
	return r;
}

long op2()
{
	long r=nr();
	if(*p=='*')
	{
		++p;
		r*=nr();
	}
	else if(*p=='/')
	{
		++p;
		r/=nr();
	}
	return r;
}

long nr()
{
	long r=0;
	if(*p=='(')
	{
		++p;
		r=op1();
		++p;
	}
	else while(*p>='0'&&*p<='9')
	{
		r=r*10+*p-'0';
		++p;
	}
	return r;
}


int main()
{
	freopen("evaluare.in", "r", stdin);
	freopen("evaluare.out", "r", stdout);
	scanf("%s", &s);
	printf("%ld\n", op1());
	return 0;
}