Cod sursa(job #389663)

Utilizator BaduBadu Badu Badu Data 2 februarie 2010 00:04:00
Problema Evaluarea unei expresii Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
#define max 100010

char S[max],*p=S;

long p1();
long p2();
long p3();

long p1(){
	
	long raspuns = p2();
	
	while( *p == '+' || *p == '-' ){
		
		switch( *p ){
			
		case '+': ++p; raspuns+=p2(); break;
		case '-': ++p; raspuns-=p2(); break;
		}
	}
	
	return raspuns;
	
}

long p2(){
	
	long raspuns = p3();
	
	while( *p == '*' || *p == '/' ){
		
		switch( *p ){
			
		case '*': ++p; raspuns*=p3(); break;
		case '/': ++p; raspuns/=p3(); break;
		}
	}
	
	return raspuns;
}


long p3(){
	
	long raspuns = 0;
	
	switch ( *p ){
		
	case '(': ++p; p1(); ++p; break; 
	default : 
		for( ; '0' <= *p && '9' >= *p ; ++p ) raspuns = raspuns*10 + *p - '0';
	}
	
	return raspuns;

}
int main(){
	
	FILE *f = fopen("evaluare.in","r");
	FILE *g = fopen("evaluare.out","w");
	
	fgets ( S, max, f );
	
	fprintf(g,"%ld\n",p1());
	
	return 0;
}