Cod sursa(job #693125)

Utilizator BirisDenisaBiris Denisa BirisDenisa Data 27 februarie 2012 09:48:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
using namespace std;
char e[100001];
int i;
long termen();
long factor();
long expresiearitmetica()
{
	long r=termen();
	while(e[i]=='+'||e[i]=='-')
		if(e[i]=='+')
		{
			i++;
			r=r+termen();
		}
		else
		{
			i++;
			r=r-termen();
		}
	return r;
}
long termen ()
{
	long r=factor();
	while(e[i]=='*'||e[i]=='/')
		if(e[i]=='*')
		{
			i++;
			r=r*factor();
		}
		else
		{
			i++;
			r=r/factor();
		}
	return r;
}
long factor()
{
	long r;
	if(e[i]=='(')
	{
		i++;
		r=expresiearitmetica();
		i++;
	}
	else
	{
		r=0;
		while(e[i]<='9'&&e[i]>='0')
		{
			r=r*10+e[i]-'0';
			i++;
		}
	}
	return r;
}
int main ()
{
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	f>>e;
	g<<expresiearitmetica();
	f.close();
	g.close();
	return 0;
}