Cod sursa(job #266971)

Utilizator katakunaCazacu Alexandru katakuna Data 26 februarie 2009 15:35:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include<stdio.h>

int p,i;
char v[100111];
int eval(),termen(),factor();

int eval(){
	int a;
	a = termen();
	while( v[p] == '-' || v[p] == '+' ){
		if(v[p] == '-'){
			p++;
			a-=termen();
		}
		else{
			p++;
			a+=termen();
		}
	}
	
	return a;
}


int termen(){
	int a;
	a = factor();
	while( v[p] == '*' || v[p] == '/' ){
		if(v[p] == '/'){
			p++;
			a/=factor();
		}
		else{
			p++;
			a*=factor();
		}
	}	
	
	return a;
}

int factor(){
	int a = 0;
	
	if(v[p] == '('){
		p++;
		a = eval();
		p++;
	}
	else{
		for(;v[p] >= '0' && v[p] <= '9';p++)
			a = a*10 + v[p] - '0';
	}
	
	return a;
}


int main(){

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

	fscanf(f,"%s",v);
	fprintf(g,"%d",eval());
	
	fclose(f);
	fclose(g);
	return 0;
}