Cod sursa(job #147874)

Utilizator c_sebiSebastian Crisan c_sebi Data 3 martie 2008 17:56:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <stdio.h>

char exp[100001], *p=exp;

int evalExp();
int evalTerm();
int evalFact();

int evalExp(){
	int t=evalTerm();
	while(*p=='+' || *p=='-')
		if(*p=='+') p++, t += evalTerm();
		else p++, t -= evalTerm();
	return t;
}

int evalTerm(){
	int t=evalFact();
	while(*p=='*' || *p=='/')
		if(*p=='*') p++, t *= evalFact();
		else p++, t /= evalFact();
	return t;
}

int evalFact(){
	int t;
	if(*p=='('){
		p++;
		t = evalExp();
		p++;
	}
	else{
		t = 0;
		while(*p>='0' && *p<='9') t = t*10 + *p-'0', p++;
	}
	return t;
}



int main(){
	FILE *f=fopen("evaluare.in", "r");
	FILE *g=fopen("evaluare.out", "w");
	fscanf(f, "%s", exp);
	fprintf(g, "%d\n", evalExp());
	fclose(f);
	fclose(g);
	return 0;
}