Cod sursa(job #554752)

Utilizator pavelsimutFMI pavelsimut pavelsimut Data 15 martie 2011 09:10:34
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");

int expresie();
int termen ();
int factor ();

char s[100001];
int poz;

int main ()
{
	int i;
	in>>s[0];
	for(i=1;s[i-1]!=0;i++)
		in>>s[i];		
	out<<expresie();
	return 0;
}
int factor ()
{
	int semn=1,val=0;
	if(s[poz]=='-')
	{
		semn=-1;
		poz++;
	}
	if(s[poz]=='(')
	{
		poz=poz+1;
		val=expresie();
		++poz;
		return val;
	}
	while (s[poz]>='0'&&s[poz]<='9')
	{
		val=val*10+s[poz]-'0';
		++poz;
	}
	return val;
}
int expresie()
{
	int sum=termen();
	while(s[poz]=='+'||s[poz]=='-')
	{	
		if(s[poz]=='+')
		{
			++poz;
			sum+=termen();
		}
		else
		{
			++poz;
			sum-=termen();
		}
	}	
	return sum;
}
int termen ()
{
	int prod=factor();
	while(s[poz]=='*'||s[poz]=='/')
	{	
		if(s[poz]=='*')
		{
			++poz;
			prod*=factor();
		}
		else
		{
			++poz;
			prod/=factor();
		}
	}
	return prod;
}