Cod sursa(job #709593)

Utilizator iuli1505Parasca Iuliana iuli1505 Data 8 martie 2012 12:01:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<cstdio>
#include<string>
using namespace std;
#define nmax 100010
char sir[nmax],*c;
int aux;
int suma(),produs(),paranteza(),numar();
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s", &sir);
	c=sir;
	printf("%d",suma());
	return 0;
}
int suma()
{
	int ret=produs();
	char op=*c;
	while(op=='-'||op=='+')
	{
		c++;
		aux=produs();
		if(op=='+')
			ret+=aux;
		else
			ret-=aux;
		op=*c;
	}
	return ret;
}
int produs()
{
	int ret=paranteza();
	char op=*c;
	while(op=='*'||op=='/')
	{
		c++;
		aux=paranteza();
		if(op=='*')
			ret*=aux;
		else
			ret/=aux;
		op=*c;
	}
	return ret;
}
int paranteza()
{
	int ret;
	if(*c=='(')
	{
		c++;
		ret=suma();
		c++;
		return ret;
	}
	return numar();
}
int numar()
{
	int ret=0;
	while(*c>='0'&&*c<='9')
	{
		ret*=10;
		ret+=*c-'0';
		c++;
	}
	return ret;
}