Cod sursa(job #409960)

Utilizator paul992Cirstean Paul paul992 Data 3 martie 2010 22:35:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<stdio.h>
#include<string.h>

char s[100000], *p=s;

int eval();
int termen();
int factor();
void cit()
{
	scanf("%s",&s);
	
}

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

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

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


int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	
	cit();
	printf("%d",eval());
	
	
	return 0;
}