Cod sursa(job #1166090)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 3 aprilie 2014 11:08:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>


using namespace std;

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

char sir[100100] , *p;

int evaluare();
int factor();
int termen();

int main(){

	f>>sir;
	p = sir;
	g<<evaluare();

	return 0;
}

int evaluare(){

	int r = factor();

	while( (*p) == '+' || (*p) == '-' ){
		if( (*p) == '+' ){
			p++;
			r += factor();
		}
		else{
			p++;
			r -= factor();
		}
	}

	return r;
}

int factor(){

	int r = termen();

	while( (*p) == '*' || (*p) == '/' ){
		if( (*p) == '*' ){
			p++;
			r *= termen();
		}
		else{
			p++;
			r /= termen();
		}
	}

	return r;
}

int termen(){
	int rez = 0;
	if( (*p) == '(' ){
		p++;
		rez = evaluare();
		p++;
	}
	else{
		while( '0' <= (*p) && (*p) <= '9' ){
			rez = rez * 10 + (*p) - '0';
			p++;
		}
	}
	return rez;
}