Cod sursa(job #208286)

Utilizator rapidu36Victor Manz rapidu36 Data 15 septembrie 2008 16:54:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#define N 100100
char *p,s[N];

inline bool cifra(char c){
	return c>='0' && c<='9';
}

int eval();

int factor(){
	int x=0;
	if(*p=='('){
		++p;
		x=eval();
		++p;
	}
	while(cifra(*p))
		x=x*10+((*p++)-'0');
	return x;
}

int termen(){
	int x=factor();
	while(*p=='*' || *p=='/'){
		if(*p=='*'){
			++p;
			x*=factor();
		}
		if(*p=='/'){
			++p;
			x/=factor();
		}
	}
	return x;
}

int eval(){
	int x=termen();
	while(*p=='+' || *p=='-'){
		if(*p=='+'){
			++p;
			x+=termen();
		}
		if(*p=='-'){
			++p;
			x-=termen();
		}
	}
	return x;
}

int main(){
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(s,N,stdin);
	p=s;
	printf("%d\n",eval());
	return 0;
}