Cod sursa(job #677502)

Utilizator thebest001Neagu Rares Florian thebest001 Data 10 februarie 2012 12:04:03
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <stdio.h>
char *p;
char f[100001];
int solve();
int multi();
int termi();

int solve(){
	int f=multi();
	while (*p=='+' || *p=='-'){
		if (*p=='+'){
			p++;
			f+=multi();
		}
		if (*p=='-'){
			p++;
			f-=multi();
		}
	}
	return f;
}


int multi(){
	int f=termi();
	while (*p=='*' || *p=='/'){
		if (*p=='*'){
			p++;
			f*=termi();
		}
		if (*p=='/'){
			p++;
			f/=termi();
		}
	}
	return f;
}

int termi(){
	int nr=0;
	if (*p=='('){
		p++;
		nr=solve();
		p++;
		return nr;
	}
	while (*p>='0' && *p<='9'){
		nr=nr*10+*p-'0';
		p++;
	}
	return nr;
}

int main(){
	freopen("polo.in","r",stdin);
	freopen("polo.out","w",stdout);
	gets(f);p=f;
	printf("%d",solve());
	return 0;
}