Cod sursa(job #380573)

Utilizator marinMari n marin Data 6 ianuarie 2010 18:35:30
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#define DIM 100002

char s[DIM];
char *p;

int termen();
int factor();

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

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

int factor() {
	int r = 0;
	if (*p == '(') {
		p++;
		r = expresie();
		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);
	
	p = s;
	
	FILE *g = fopen("evaluare.out","w");
	fprintf(g,"%d",expresie());
	fclose(g);
	
	return 0;
}