Cod sursa(job #535378)

Utilizator KoniacDocea Andrei Koniac Data 17 februarie 2011 09:58:45
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<stdio.h>

FILE*f=fopen("evaluare.in","r");
FILE*g=fopen("evaluare.out","w");

char v[100000];
char *p=v;
long termen();
long factor();

long eval() {
	long x=termen();
	while(*p=='+'||*p=='-'){
		if(*p=='+'){
			++p;
			x+=termen();
		}else{
			++p;
			x-=termen();
		}
	}
	return x;
}
long termen(){
	long x=factor();
	while(*p=='*'||*p=='/'){
		if(*p=='*'){
			++p;
			x*=factor();
		}else{
			++p;
			x/=factor();
		}
	}
	return x;
}
long factor(){
	long x=0;
	if(*p=='('){  
		++p;
		x=eval();
		++p;
	}else
		while(*p>='0'&&*p<='9'){ 
			x=x*10+*p-'0';
			++p;
		}
	return x;	
}
int main() {
	fscanf(f,"%s",&v);
	fprintf(g,"%ld",eval());
	fclose(g);
	fclose(f);
	return 0;
}