Cod sursa(job #726825)

Utilizator Stefana_fFratean Stefana Stefana_f Data 27 martie 2012 15:43:59
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

const long max = 100001;
char sir[max];

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");
	f.getline(sir);
	f.close();
	ofstream g("evaluare.out");
	g<<evaluare();
	g.close();
	return 0;
}
63.}