Cod sursa(job #914477)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 14 martie 2013 10:21:17
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<cstdio>
#include<cstring>
#define max 100010
using namespace std;
char s[max],*p=s;

int grad1();
int grad2();
int numar();

int grad1()
{
	int r=grad2();
	while (*p=='+' || *p=='-')
		if (*p=='+') ++p,r+=grad2();else ++p,r-=grad2();
	return r;
}

int grad2()
{
	int r=numar();
	while (*p=='*' || *p=='/')
		if (*p=='*') ++p,r*=numar();else ++p,r/=numar();
	return r;
}

int numar()
{
	int r=0;
	if (*p=='(') ++p,r=grad1(),++p;else
		while (*p>='0' && *p<='9')
			r=r*10+(*p-'0'),++p;
	return r;
}

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