Cod sursa(job #1476161)

Utilizator dimavascan94VascanDumitru dimavascan94 Data 24 august 2015 15:49:55
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdio.h>
#include <string.h>

char expr[100005];
int result,it,size;

int evaluate();

int atom()
{
	int nmb=0;
	if(expr[it]=='(')
	{
		it++;
		nmb=evaluate();
		it++;
	} 
	else
	{
		nmb=expr[it++]-'0';
		while(expr[it]>='0' && expr[it]<='9')
		{
			nmb*=10;
			nmb+=expr[it++]-'0';
		}
	}
	return nmb;
}

int term()
{
	int res =atom();
	while (expr[it]=='*' || expr[it]=='/')
	{
		if  (expr[it++]=='/') res/=atom();
		else res*=atom();
	}
	return res;
}

int evaluate()
{
	int res=term();
	while ( (expr[it]=='+' || expr[it]=='-') && expr[it]!='\0')
	{
		if  (expr[it++]=='+')  res+=term();
		else  res-=term();
	}
	return res;
}

int main()
{	
	scanf("%s",expr);
	
	size=strlen(expr),result=0,it=0;
	
	result = evaluate();
	printf("%d",result);
}