Cod sursa(job #563133)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 24 martie 2011 15:23:46
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#define NMAX 100005

using namespace std;

int n;
char a[NMAX], *p;

ifstream f("evaluare.in");
ofstream g("evaluare.out");

int termen();
int factor();

int evaluare()
{
	int r;
	r=termen();
	while (*p=='+' || *p=='-') 
		if (*p=='+') ++p, r+=termen();
			else ++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=evaluare();
			++p;
		}
	else 
		//F10
		while (strchr("0123456789\n", *p) && *p-'0'>=0) 
		{
			r=r*10+(*p-'0');
			++p;
		}
	return r;
}

int main()
{
	f.getline(a, NMAX);
	p=a;
	g<<evaluare()<<"\n";
	f.close();
	g.close();
	return 0;
}