Cod sursa(job #872821)

Utilizator tibi9876Marin Tiberiu tibi9876 Data 6 februarie 2013 17:07:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#include<string>
using namespace std;

string s;
int x;

int egal(int x,int y,char op)
{
	switch(op)
	{
	case '+': return x+y;
	case '-': return x-y;
	case '*': return x*y;	
	case '/': return x/y;
	}
}

int eval();

int nr()
{
	if (s[x]=='(')
	{
		x++;
		return eval();
	}
	int k=0;
	while ((s[x]>='0') && (s[x]<='9'))
	{
		k=k*10+s[x]-'0';
		x++;
	}
	return k;
}

int eval2()
{
	int k,t;
	char op;
	k=nr();
	while ((s[x]=='*') || (s[x]=='/'))
	{
		op=s[x];
		x++;
		t=nr();
		k=egal(k,t,op);
	}
	return k;
}

int eval()
{
	int k,t;
	char op;
	k=eval2();
	while (s[x]!=')')
	{
		op=s[x];
		x++;
		t=eval2();
		k=egal(k,t,op);
	}
	x++;
	return k;
}	

int main()
{
	ifstream f("evaluare.in");
	ofstream g("evaluare.out");
	f >> s;
	s[s.length()]=')';
	x=0;
	g << eval();
}