Cod sursa(job #538835)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 21 februarie 2011 22:36:37
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<stdio.h>
#include<string.h>

#define DIM 100001

char sir[DIM], *p;
int sol;

int solve(), termen(), factor();

int solve() {
	int rez=factor();
	while(*p=='+' || *p=='-') 
		if(*p=='+') {
			p++;
			rez+=factor();
		}
		else {
			p++;
			rez-=factor();
		}
	return rez;
}

int factor() {
	int rez=termen();
	while(*p=='*' || *p=='/')
		if(*p=='*') {
			p++;
			rez*=termen();
		}
		else {
			p++;
			rez/=termen();
		}
	return rez;
}

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

int main() {
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	
	gets(sir);
	p=sir; sol=solve();
	printf("%d\n",sol);
	
	return 0;
}