Cod sursa(job #279630)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 12 martie 2009 21:43:53
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#define N 100005
char S[N],*p=S;
int termen();
int factor();
int eval(){
	int r=termen();
	while(*p=='+' || *p=='-')
		if(*p=='+') {
			p++;
			r+=termen();
		}
		else {
			p++;
			r-=termen();
		}
	return r;
}
int termen(){
	int r=factor();
	while(*p=='*' || *p=='/')
		if(*p=='*') {
			p++;
			r*=factor();
		}
		else {
			p++;
			r/=factor();
		}
	return r;
}
int factor(){
	int r=0;
	if (*p=='('){
		p++;
		r=eval();
		p++;
	}
	else while(*p>='0' && *p<='9') {
		r=r*10+*p-'0';
		p++;
	}
	return r;
}
int main(){
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(S,N,stdin);
	printf("%d\n",eval());
	return 0;
}