Cod sursa(job #697512)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 29 februarie 2012 09:34:14
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include<stdio.h> 
char s[100000]; 
int i=0; 
int eval(); 
int termen(); 
int factor();
int eval() {
	int r=termen();
	while(s[i]=='+' || s[i]=='-') 
		if(s[i]=='+') {
			i++;
			r+=termen(); 
		}
		else {
			i++; 
			r-=termen(); 
		}
		return r; 
}
int termen(){
	int r=factor(); 
	while(s[i]=='*' || s[i]=='/') 
		if(s[i]=='*') {
			i++;
			r*=factor(); 
		}
		else {
			i++; 
			r/=factor();
		}
return r; 
}
int factor() {
	int r=0; 
	if(s[i]=='(') {
		i++; 
		r=eval(); 
		i++; 
		return r;
	}
	while(s[i]>='0' && s[i]<='9')	{
		r=r*10+s[i]-'0'; 
		i++; 
	}
	return r; 
}
int main() {
	freopen("evaluare.in", "r", stdin);  
    freopen("evaluare.out", "w", stdout); 
    scanf("%s", s); 
    printf("%d\n", eval());	
	return 0; 
}