Cod sursa(job #525486)

Utilizator The_DisturbedBungiu Alexandru The_Disturbed Data 25 ianuarie 2011 12:15:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#include<stdlib.h>
char s[100000],*p=s;
int eval();
int term();
int fact();
int eval()
{
	int x=term();
	while(*p=='+'||*p=='-')
		switch(*p)
		{
		case '+':
			{
				p++;
				x+=term();
				break;
			}
		case '-':
			{
				p++;
				x-=term();
				break;
			}
		}
	return x;
}
int term()
{
	int x=fact();
	while(*p=='*'||*p=='/')
		switch(*p)
		{
		case '*':
			{
				p++;
				x*=fact();
				break;
			}
		case '/':
			{
				p++;
				x/=fact();
				break;
			}
		}
	return x;
}
int fact()
{
	int x=0;
	if(*p=='(') {p++;x=eval();p++;}
	while(*p>='0'&&*p<='9')
	{
		x=x*10+(int)*p-(int)'0';
		p++;
	}
	return x;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	gets(s);
	printf("%d",eval());
	return 0;
}