Cod sursa(job #302628)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 9 aprilie 2009 08:52:48
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<iostream>
#include<stdio.h>
char a[1001010];
int termen();
int factor();
int nr(),i;
int termen()
{
	int rez=0;
	rez=factor();
	while(a[i]=='+'||a[i]=='-')
		if(a[i++]=='+')
			rez+=factor();
		else
			rez-=factor();
	return rez;
}
int factor()
{
	int rez=0;
	rez=nr();
	while(a[i]=='*'||a[i]=='/')
		if(a[i++]=='*')
			rez*=nr();
		else
			rez/=nr();
	return rez;
}
int nr()
{
	int rez=0;
	if(a[i]=='(')
	{
		i++;
		rez=termen();
		i++;
	}
	else
		while('0'<=a[i]&&a[i]<='9')
			rez=rez*10+a[i++]-'0';
	return rez;
}
int main()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",a);
	printf("%d\n",termen());
	return 0;
}