Cod sursa(job #704819)

Utilizator Anonymous1010Chilivercu Cristian Anonymous1010 Data 2 martie 2012 20:53:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>

char a[100002];
int i;

int eval();
int termen();
int factor();

int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	
	scanf("%s",a);
	
	i=0;
	
	printf("%d",eval());
	
	return 0;
}

int eval()
{
	int r;
	r=termen();
	while(a[i]=='+'||a[i]=='-')
	{
		if(a[i]=='+')
		{
			i++;
			r+=termen();
		}
		if(a[i]=='-')
		{
			i++;
			r-=termen();
		}
	}
	return r;
}

int termen()
{
	int r;
	r=factor();
	while(a[i]=='*'||a[i]=='/')
	{
		if(a[i]=='*')
		{
			i++;
			r*=factor();
		}
		if(a[i]=='/')
		{
			i++;
			r/=factor();
		}
	}
	return r;
}

int factor()
{
	int r;
	r=0;
	if(a[i]=='(')
	{
		i++;
		r=eval();
		i++;
	}
	else
	{
		while(a[i]>='0'&&a[i]<='9')
		{
			r=r*10+a[i]-'0';
			i++;
		}
	}
	return r;
}