Cod sursa(job #441998)

Utilizator nashnash mit nash Data 13 aprilie 2010 19:28:42
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
#include <string.h>

#define NMAX 100010

int termen();
int factor();
int exp();

char str[NMAX],*p = str;

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

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

int factor() {
	int r = 0;
	if(*p == '(' ) {
		++p;
		r = exp();
		++p;
	} else
		while(*p >= '0' && *p <= '9') {
			r = r*10 + *p-'0';
			++p;
		}
	return r;
}

int main(){
	
	freopen("evaluare.in","rb",stdin);
	freopen("evaluare.out","w",stdout);
	
	fread(str, sizeof(char), NMAX, stdin);
	printf("%d",exp());
	
	return 0;
}