Cod sursa(job #823212)

Utilizator costin7856Antonesi Florean Costin costin7856 Data 24 noiembrie 2012 19:03:41
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream>
#define dim 100001
using namespace std;
int n,l;
char a[dim];
int sum();

int nr()
{
	int r=0;
	while(a[l]>='0'&&a[l]<='9')
	{
		r=r*10+a[l]-'0';
		l++;
	}
	return r;
}
int fact()
{
	int r;
	if(a[l]=='(')
	{
		l++;
		r=sum();
		l++;
	}
	else
		r=nr();
		return r;
}
int termen()
{
	int r=fact();
	while(a[l]=='*'||a[l]=='/')
	{
		if(a[l++]=='*')
			r*=fact();
		else
			r/=fact();
	}
	return r;
}
int sum()
{
	int r=termen();
	while(a[l]=='+'||a[l]=='-')
	{
		if(a[l++]=='+')
			r+=termen();
		else
			r-=termen();
	}
	return r;
}
int main()
{
ifstream f("evaluare.in");
ofstream g("evaluare.out");
	f.get(a,dim);
	g<<sum();
}