Cod sursa(job #726854)

Utilizator Stefana_fFratean Stefana Stefana_f Data 27 martie 2012 16:13:05
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb

#include<fstream>
#define max 100001
using namespace std;
char sir[max];
int i=0;
long termen();
long factor();


long evaluare(){
	long x = termen();
	while( (sir[i] == '+') or(sir[i] == '-'))
	switch( sir[i] ){
		case '+' :
			++i; 
			x += termen();
			break;
		case '-' :
			++i; 
			x -= termen();
			break;
	}
return x;
}

long termen(){
	 long x = factor();
		while( (sir[i] == '*') or (sir[i] == '/') )
			switch( sir[i] ){
				case '*' :
					++i;
					x *= factor();
					break;
				case '/' :
					++i;
					x /= factor();
					break;
			}
return x;
}

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

int main(){
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	
	f.getline(sir, max);
	g<<evaluare();
	
	g.close();
	f.close();
	return 0;
}