Cod sursa(job #200270)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 23 iulie 2008 00:26:25
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#define N 100002
char s[N];
int p=0;
int termen();
int factor();

int eval(){
	int r=termen();
	while(s[p]=='+' || s[p]=='-')
		if(s[p]=='+'){
			p++;
			r+= termen();
		}
		else {
			p++;
			r-=termen();
		}
	return r;
}
int termen(){
	int r=factor();
	while(s[p]=='*' || s[p]=='/')
		if(s[p]=='*'){
			p++;
			r*=factor();
		}
		else {
			p++;
			r/=factor();
		}
	return r;
}
int factor(){
	int r=0;
	if(s[p]=='('){
		p++;
		r=eval();
		p++;
	}
	else while(s[p]>='0' && s[p]<='9'){
		r=r*10+s[p]-'0';
		p++;
	}
	return r;
}
int main(){
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",s);
	printf("%d",eval());
}