Cod sursa(job #447402)

Utilizator sabina67Zavoianu Sabina sabina67 Data 28 aprilie 2010 17:06:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<stdio.h>
#include<string.h>
#define N 1<<17
char *p;
char s[N];
int expresie();
int termen();
int factor();

int expresie()

{
	int s=termen();
	while(*p=='+' || *p=='-')
	{
		if(*p=='+')
			++p,s+=termen();
		else
		if(*p=='-')
			++p,s-=termen();
	}
	return s;
}

int termen()
{
	int t=factor();
	while(*p=='*' || *p=='/')
	{
		if(*p=='*')
			++p,t*=factor();
		else
		if(*p=='/')
			++p,t/=factor();
	}
	return t;
}
int factor()
{
	int f=0,semn=1;
	if(*p=='(')
	{
		++p;
		f = expresie();
		++p;
		return f;
	}
	if(*p=='-')
		semn = -1;
	while(*p>='0' && *p<='9')
	{
		f = f*10 +*p - '0';
		++p;
	}
	return semn*f;
}


int main()

{

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


	fgets(s,N,stdin);

	p = s;
	int x = expresie();

	printf("%d",x);

	return 0;

}