Cod sursa(job #692454)

Utilizator dora123Guta Dora dora123 Data 26 februarie 2012 16:14:58
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<fstream>
using namespace std;
char e[100001];
long termen();
long factor();
int i;

long expresie()
{
	long r;
	r=termen();
	while(e[i]=='+'||e[i]=='-')
	{
		if(e[i]=='+')
		{   
			i++;
			r+=termen();
		}
		else
		{
			i++;
			r-=termen();
		}
	}
	return r;
}

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

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



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