Cod sursa(job #158688)

Utilizator mariussMarius Telespan mariuss Data 13 martie 2008 19:40:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h>
#define nmax 100000
int i,j,p;
char s[nmax];
int get_nr();
int get_s();
int get_e()
{
	int rez=get_s();

	while(s[p]=='+'||s[p]=='-')
	{
		p++;
		if(s[p-1]=='+')
			rez+=get_s();
		else
			rez-=get_s();
	}

	return rez;
}

int get_s()
{
	int rez=get_nr();
	while(s[p]=='*'||s[p]=='/')
	{
		p++;
		if(s[p-1]=='*')
			rez*=get_nr();
		else
			rez/=get_nr();
	}
	return rez;
}

int get_nr()
{
	int rez=0;

	if(s[p]=='(')
	{
		p++;
		rez+=get_e();
		p++;
		return rez;
	}
	else
	{

		for(;'0'<=s[p] && s[p]<='9'; p++)
		rez=rez*10+s[p]-'0';

		return rez;
    }


}

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);

	scanf("%s",&s);
	
	printf("%d",get_e());

	return 0;

}