Cod sursa(job #200254)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 22 iulie 2008 21:54:43
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 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();
			break;
		}
		else {
			p++;
			r-=termen();
			break;
		}
	return r;
}
int termen(){
	int r=factor();
	while(s[p]=='*' || s[p]=='/')
		if(s[p]=='*'){
			p++;
			r*=factor();
			break;
		}
		else {
			p++;
			r/=factor();
			break;
		}
	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());
}