Cod sursa(job #380652)

Utilizator n3msizN3msiz n3msiz Data 7 ianuarie 2010 10:13:11
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#define DIM 100002

char s[DIM], *p = s;

int exp();
int term();
int fact();


int exp(){
	int r = term();
	while (*p == '+' || *p == '-') {
		
		if (*p == '+') {
			p++;
			r+=term();
		} else {
			p++;
			r-=term();
		}
	}
	return r;
}


int term(){
	int r = fact();
	while (*p == '*' || *p == '/') {
		
		if (*p == '*') {
			p++;
			r*=fact();
		} else {
			p++;
			r/=fact();
		}
	}
	return r;
}

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




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