Cod sursa(job #206296)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 5 septembrie 2008 18:10:57
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<stdio.h>
#include<string.h>
#define N 100005
char s[N],*p=s;
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!='\n' && *p>='0' && *p<='9'){
			r=r*10+(*p-'0');
			++p;
		}
	return r;
}
int main(){
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	fgets(p,N,stdin);
	printf("%d\n",expresie());
	fclose(stdin);
	fclose(stdout);
	return 0;
}