Cod sursa(job #908847)

Utilizator taigi100Cazacu Robert taigi100 Data 10 martie 2013 03:26:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>

char S[100010],*p=S;
long long solve();
long long imn();
long long plm();

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

long long plm()
{
	long long r=imn();
	while(*p == '*' || *p=='/')
	{
		switch ( *p )
	{
		case '*':
			++p;
			r*=imn();
			break;
			case '/':
				++p;
				r/=imn();
				break;
	}
	}
	return r;
}

long long solve()
{
	long long r=plm();
	while(*p== '+' || *p=='-')
	{
		switch(*p)
		{
		case '+':
			++p;
			r+=plm();
			break;
		case '-':
			++p;
			r-=plm();
			break;
		}
	}
	return r;
}

int main()
{
	fgets(S,100010,fopen("evaluare.in","r"));
	fprintf(fopen("evaluare.out","w"),"%lld",solve());
	return 0;
}