Cod sursa(job #562423)

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

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

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

int termen()
{
	int r=factor();
	
	while(*p=='*' || *p=='/')
	{
		if(*p=='*')
		{
			++p;
			r*=factor();
		}
		else if(*p=='/')
		{
			++p;
			r/=factor();
		}
	}
	return r;
}
	
int factor()
{
	int r=0;
	
	if(*p=='(')
	{
		++p;
		r=eval();
		++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);
	p=(char *) s.c_str();
	out<<eval()<<endl;
	in.close();
	out.close();
}