Cod sursa(job #301833)

Utilizator katakunaCazacu Alexandru katakuna Data 8 aprilie 2009 14:36:59
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <cstdio>

int p;
char v[100010];
int eval(), termen(), factor();

int eval(){

	int r = 0;
	r = termen();
	while( v[p] == '+' || v[p] == '-' )
		if( v[p] == '+' ){p++; r+= termen();}
		else {p++; r-= termen();}
	
	return r;
}

int termen(){

	int r = 0;
	r = factor();
	while( v[p] == '*' || v[p] == '/' )
		if( v[p] == '*' ){ p++; r*= factor();}
		else { p++; r/= factor();}

	return r;
}

int factor(){
	
	int r = 0;
	if( v[p] == '('){
		p++;
		r = eval();
		p++;
	}

	else
		while( v[p] >= '0' && v[p] <= '9' )
			r = r * 10 + v[p] - '0', p++;
	
	return r;
}


int main(){

	FILE *f = fopen("evaluare.in", "r");
	FILE *g = fopen("evaluare.out", "w");
	
	v[0] = ' '; p = 1;
	fscanf(f,"%s", v + 1);
	fprintf(g,"%d", eval());
	
	fclose(f);
	fclose(g);
	
	return 0;

}