Cod sursa(job #493831)

Utilizator PlayLikeNeverB4George Marcus PlayLikeNeverB4 Data 19 octombrie 2010 17:37:49
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>

char s[100001];
int p=0;

int factori();
int expresii();
int termeni()
{
	int r=factori();
	while(s[p]=='+' || s[p]=='-') // a+b+c-d
	{
	if(s[p]=='+')
	{
		p++;
		r=r+factori();
	}
	if(s[p]=='-')
	{
		p++;
		r=r-factori();
	}
	}
	return r;
}

int factori()
{
	int r=expresii();
	while(s[p]=='*' || s[p]=='/') //a*b*c/d
	{
	if(s[p]=='*')
	{
		p++;
		r=r*expresii();
	}
	if(s[p]=='/')
	{
		p++;
		r=r/expresii();
	}
	}
	return r;
}

int expresii()
{
	int r=0;
    while(s[p]>='0' && s[p]<='9')
	{
		r=10*r+s[p]-'0';
		p++;
	}
	if(s[p]=='(')
	{
		p++;
		r=termeni();
		p++;
	}
	return r;
}


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