Cod sursa(job #359477)

Utilizator proflaurianPanaete Adrian proflaurian Data 26 octombrie 2009 23:17:29
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<stdio.h>
#include<string.h>
char *c,expr[100010];
int s(),p(),b(),n();
void read(),solve();
int main()
{
	read();
	solve();
	return 0;
}
void read()
{
	freopen("evaluare.in","r",stdin);
	freopen("evaluare.out","w",stdout);
	scanf("%s",expr);
}
void solve()
{
	c=expr;printf("%d\n",s());
}
int s()
{
	int ret=p();
	while(*c=='+'||*c=='-')
	{
		if(*c=='+'){c++;ret+=p();}
		else {c++;ret-=p();}
	}
	return ret;
}
int p()
{
	int ret=b();
	while(*c=='*'||*c=='/')
	{
		if(*c=='*'){c++;ret*=b();}
		else {c++;ret/=b();}
	}
	return ret;
}
int b()
{
	int ret;
	if(*c=='('){c++;ret=s();c++;}
	else ret=n();
	return ret;
}
int n()
{
	int ret=0;
	while(*c>='0'&&*c<='9'){ret*=10;ret+=*c-'0';c++;}
	return ret;
}