Cod sursa(job #673328)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 4 februarie 2012 12:16:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
char a[100010],*p;
int expresie();
int termen();
int factor();
int main(){
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",a);
	p=a;
	printf("%d",expresie());
	return 0;
}
int expresie(){
	int rez=termen();
	while(*p=='+'||*p=='-'){
		if(*p=='+'){
			p++;
			rez+=termen();
		}
		else{
			p++;
			rez-=termen();
		}
	}
	return rez;
}
int termen(){
	int rez=factor();
	while(*p=='*'||*p=='/'){
		if(*p=='*'){
			p++;
			rez*=factor();
		}
		else{
			p++;
			rez/=factor();
		}
	}
	return rez;
}
int factor(){
	int rez=0;
	if(*p=='('){
		p++;
		rez=expresie();
		p++;
	}
	else{
		while(*p>='0'&&*p<='9'){
			rez=rez*10+(*p-'0');
			p++;
		}
	}
	return rez;
}