Cod sursa(job #825297)

Utilizator andreidanAndrei Dan andreidan Data 28 noiembrie 2012 12:23:19
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
#include <cstring>
#include <cctype>

#define MAXN 100005

char s[MAXN];
int cursor(0);

int eval();
int eval2();
int eval3();

int eval3(){
	int nr(0);
	if(s[cursor] == '('){
		++cursor;
		nr = eval();
		++cursor;
	}else{
		while(isdigit(s[cursor])){
			nr = nr * 10 + (s[cursor]-'0');
			++cursor;
		}
	}
	return nr;
}
		

int eval2(){
	int nr=eval3();
	while(s[cursor] == '*' || s[cursor] == '/'){
		if(s[cursor] == '*'){
		++cursor;
		nr *= eval3();
		}else{
			
		++cursor;
		nr /= eval3();
		}
	}
		
	return nr;
}
		

int eval(){
	int nr = eval2();
		while(s[cursor] == '+' || s[cursor] == '-'){
			if(s[cursor] == '+'){
				++cursor;
				nr += eval2();
			}else{
				++cursor;
				nr -= eval2();
			}
		}
	return nr;
}
	

int main (){
	freopen("evlauare.in","r",stdin);
	freopen("evlauare.out","w",stdout);
	scanf("%s", s);
	printf("%d", eval());
}