Cod sursa(job #565728)

Utilizator ms-ninjacristescu liviu ms-ninja Data 28 martie 2011 11:10:24
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
using namespace std;
#define dim 100001
char ch[dim];
int n;

int eval();
int termen();
int factor();

int eval()
{
	int rez=0;
	
	rez=termen();
	
	while(ch[n]=='+' || ch[n]=='-')
	{
		++n;
		if(ch[n-1]=='+')
			rez+=termen();
		else
			rez-=termen();
	}
	
	return rez;
}


int termen()
{
	int rez=0;
	rez=factor();
	
	while(ch[n]=='*' || ch[n]=='/')
	{
		++n;
		if(ch[n-1]=='*')
			rez*=factor();
		else
			rez/=factor();
	}
	return rez;
}


int factor()
{
	int rez=0;
	if(ch[n]=='(')
	{
		++n;
		rez=eval();
		++n;
	}
	else
		for(rez=0;isdigit(ch[n]);++n)
			rez=rez*10+ch[n]-'0';
		
		return rez;
}



int main()
{
	ifstream fin("evaluare.in");
	ofstream fout("evaluare.out");
	

	fin.getline(ch , dim);
	fout<<eval();
	return 0;
}