Cod sursa(job #562428)

Utilizator bent_larsenSturzu Antonio-Gabriel bent_larsen Data 23 martie 2011 00:16:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream>
using namespace std;

int termen(char* &);
int factor(char* &);

int eval(char* &p)
{
	int r;
	r=termen(p);
	
	while(*p=='+' || *p=='-')
	{
		if(*p=='+')
		{
			++p;
			r+=termen(p);
		}
		else if(*p=='-')
		{
			++p;
			r-=termen(p);
		}
	}
	return r;
}

int termen(char* &p)
{
	int r=factor(p);
	
	while(*p=='*' || *p=='/')
	{
		if(*p=='*')
		{
			++p;
			r*=factor(p);
		}
		else if(*p=='/')
		{
			++p;
			r/=factor(p);
		}
	}
	return r;
}
	
int factor(char* &p)
{
	int r=0;
	
	if(*p=='(')
	{
		++p;
		r=eval(p);
		++p;
	}
	else
	{		
		while(*p>='0' && *p<='9')
		{
			r=r*10+(*p-'0');
			++p;
		}
	}
	return r;
}

int main()
{
	ifstream in("evaluare.in");
	ofstream out("evaluare.out");
	
	string s;
	getline(in,s);
	char *p=(char *) s.c_str();
	out<<eval(p)<<endl;
	in.close();
	out.close();
}