Cod sursa(job #542655)

Utilizator balakraz94abcd efgh balakraz94 Data 26 februarie 2011 19:00:21
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>

const long MAX = 100010;
char S[MAX], *p=S;

long prod();
long numar();
long eval();

long eval()
{
	long r=prod();
	while(*p=='-' || *p=='+')
	{
	if(*p=='-') 
	{
		++p; 
		r-=prod();
		break;
	}

	else 
	{	
		++p;
		r+=prod();
		break;
	}
	}
	
	return r;
}


long prod()
{
	long r=numar();
	while(*p=='*' || *p=='/')
	{
		if(*p=='*')
		{
		++p;
		r*=numar();	
		break;
		}
		else 
		{
			++p;
			r/=numar();
			break;
		}
	}
	return r;
}
	
long numar()
{
	long r=0;
	
	if(*p=='(')
	{
		++p;
		r = eval();
		++p;
	}
	else 
	{
		while( *p>='0' && *p<='9')
		{
		r = r*10 + *p - '0';
		++p;
		}
	}
	return r;
}




int main() { 
    fgets(S, MAX, fopen("evaluare.in", "r"));  
    fprintf(fopen("evaluare.out", "w"), "%ld\n", eval());  
    return 0;
}