Cod sursa(job #380663)

Utilizator Addy.Adrian Draghici Addy. Data 7 ianuarie 2010 11:15:19
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<stdio.h>
#define DIM 100002

char s[DIM],*p;


int expresie();
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;
}