Cod sursa(job #692659)

Utilizator cremarencodianaCremarenco Diana cremarencodiana Data 26 februarie 2012 18:12:30
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
# include <fstream>
using namespace std;
char e[1000001];
long termen();
long factor();
int i;
long expresie()
{
	long r;
	r=termen();
	if (e[i]=='+')
	{
		i++;
		r+=termen();
	}
	if (e[i]=='-')
	{
		i++;
		r-=termen();
	}
	return r;
}

long termen()
{
	long r;
	r=factor();
	if (e[i]=='*')
	{
		i++;
		r*=factor();
	}
	else
		if (e[i]=='/')
		{
			i++;
			r/=factor();
		}
	return r;
}


long factor()
{
	long r;
	if (e[i]=='(')
	{
		i++;
		r=expresie();
		i++;
	}
	else
	{
		r=0;
		while (e[i]>=48 && e[i]<=57)
		{
			r=r*10+(e[i]-'0');
			i++;
		}
	}
	return r;
}

int main()
{
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	f>>e;
	g<<expresie();
	g<<'\n';
	return 0;
}