Cod sursa(job #431854)

Utilizator bixcabc abc bixc Data 1 aprilie 2010 15:12:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>

int p;
char s[100010];
int second (), number ();

int first () {
	
	int rez = second ();
	for (; s[p] == '+' || s[p] == '-';) {
		if (s[p] == '+') p++, rez+= second ();
		else p++, rez-= second ();
	}
	
	return rez;
}

int second () {
	
	int rez = number ();
	
	for (; s[p] == '*' || s[p] == '/';) {
		if (s[p] == '*') p++, rez*= number ();
		else p++, rez/= number ();
	}
	
	return rez;
}

int number () {
	
	int rez = 0;
	if (s[p] == '(') {
		p++;
		rez = first ();
		p++; // ')'
		return rez;
	}
	
	while (s[p] >= '0' && s[p] <= '9') {
		rez = rez * 10 + s[p] - '0';
		p++;
	}
	
	return rez;
}

int main () {

	freopen ("evaluare.in", "r", stdin);
	freopen ("evaluare.out", "w", stdout);

	scanf ("%s", s);
	printf ("%d", first ());
	
	return 0;
}