Cod sursa(job #729592)

Utilizator iulynaCretu Irina iulyna Data 29 martie 2012 19:04:15
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<iostream>
#include<fstream>
using namespace std;
char s[100005];
int i;

int op();
int sep();

int calc()
{
	int r=op();
	while(s[i]=='+'||s[i]=='-')
	{
		if(s[i]=='+')
		{
			i++;
			r=r+op();
		}
		else
		{
			i++;
			r=r-op();
		}
	}
	return r;
}
int op()
{
	int r=sep();
	while(s[i]=='*'||s[i]=='/')
	{
		if(s[i]=='*')
		{
			i++;
			r=r*sep();
		}
		else
		{
			i++;
			r=r/sep();
		}
	}
	return r;
}
int sep()
{
	int r=0;
	if(s[i]=='(')
	{
		i++;
		r=calc();
		i++;
	}
	else
		while(isdigit(s[i]))
			r=r*10+(s[i]-48),i++;
	return r;
}

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

	cout<<calc();
	
	return 0;
}