Cod sursa(job #574120)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 6 aprilie 2011 20:46:10
Problema Evaluarea unei expresii Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <fstream.h>
#define DIM 10001
FILE *f=fopen("evaluare.in","r");
FILE *g=fopen("evaluare.out","w");
char s[DIM],*p;

long expresie();
long termen();
long factor();

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

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


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


int main(void){
	register int i,j;

	fscanf(f,"%s",s);
	p=s;
	fprintf(g,"%ld",expresie());
	return 0;
}