Cod sursa(job #702416)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 1 martie 2012 21:42:12
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#define LL long long

using namespace std;

char s[100001],*p=s;

LL Evaluare();
LL Factor();
LL Termen();

int main() {
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",s);
	printf("%d",Evaluare());
	return 0;
}

LL Evaluare() {
	LL ANS=Termen();char c;
	while (*p=='+' || *p=='-') {
		c=*p;p++;
		if (c=='+') ANS+=Termen();
			else ANS-=Termen();
	}
	return ANS;
}

LL Termen() {
	LL ANS=Factor();char c;
	while (*p=='*' || *p=='/') {
		c=*p;p++;
		if (c=='*') ANS*=Factor();
			else ANS/=Factor();
	}
	return ANS;
}

LL Factor() {
	LL ANS=0;
	if (*p=='(') {
		++p;
		ANS=Evaluare();
		++p;
		return ANS;
	}
	while (*p>='0' && *p<='9') {
		ANS=ANS*10+*p-'0';
		++p;
	}
	return ANS;
}