Cod sursa(job #157615)

Utilizator razvi9Jurca Razvan razvi9 Data 13 martie 2008 10:03:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<cstdio>
char a[100003],*b;
int termen();
int factor();
int eval()
{
	int x=termen();
	while(*b=='+'||*b=='-'){
		switch(*b){
			case '+':
				++b;
				x=x+termen();
				break;
			case '-':
				++b;
				x=x-termen();
				break;}}
	return x;
}
int termen()
{
	int x=factor();
	while(*b=='*'||*b=='/')
		switch(*b){
			case '*':
				++b;
				x*=factor();
				break;
			case '/':
				++b;
				x/=factor();
				break;}
	return x;
}
int factor()
{
	int x=0;
	if(*b=='('){
		++b;
		x=eval();
		++b;}
	else{
		while(*b>='0'&&*b<='9'){
			x=x*10+*b-'0';++b;}}
	return x;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	gets(a);
	b=a;
	printf("%d",eval());
	fclose(stdout);
	return 0;
}