Cod sursa(job #870253)

Utilizator mihai27Mihai Popescu mihai27 Data 3 februarie 2013 00:31:01
Problema Evaluarea unei expresii Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
#include<string.h>

using namespace std;

ifstream in("evaluare.in");
ofstream out("evaluare.out");

int i,j;
char s[100001],aux[256];

int eval();
int t();
int f();

int eval()
{
	int r=t();
	
	while (s[i]=='+' || s[i]=='-')
		if (s[i]=='+')
		{
			i++;
			r+=t();
		}
		else
		{
			i++;
			r-=t();
		}
	return r;
}

int t()
{
	int r=f();
	
	while (s[i]=='*' || s[i]=='/')
		if (s[i]=='*')
		{
			i++;
			r*=f();
		}
		else
		{
			i++;
			r/=f();
		}
	return r;
}

int f()
{
	int r=0;
	
	if (s[i]=='(')
	{
		i++;
		r=eval();
		i++;
	}
	
	else
	{
		r=0;
		while (s[i]>='0' && s[i]<='9')
		{
			r=r*10+s[i]-'0';
			i++;
		}
	}
	
	return r;
}

int main()
{
	while (!in.eof()) 
	{
		in.getline(aux,256);
		strcat(s,aux);
	}
	i=0;
	out<<eval();
}