Cod sursa(job #790232)

Utilizator Ionut228Ionut Calofir Ionut228 Data 20 septembrie 2012 18:23:16
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<fstream>
using namespace std;

ifstream f("eval.in");
ofstream g("eval.out");

char s[100001];
int i=0;

float eval();
float termen();
float factor();

	float eval ()
	{
		float r=termen();
		while(s[i]=='+' || s[i]=='-')
		{
			if(s[i]=='+')
			{
				i++;
				r+=termen();
			}
			else if(s[i]=='-')
			{
				i++;
				r-=termen();
			}
		}
		return r;
	}
	
	float termen ()
	{
		float r=factor();
		while(s[i]=='*' || s[i]=='/')
		{
			if(s[i]=='*')
			{
				i++;
				r*=factor();
			}
			else if(s[i]=='/')
			{
				i++;
				r/=factor();
			}
		}
		return r;
	}
	
	float factor ()
	{
		float r=0;
		if(s[i]=='(')
		{
			i++;
			r=eval();
			i++;
		}
		while(s[i]>='0' && s[i]<='9')
		{
			r=r*10+float(s[i]-'0');
			i++;
		}
		return r;
	}
	
	int main ()
	{
		f.getline(s,1000);
		g<<eval();
		return 0;
	}