Cod sursa(job #673969)

Utilizator EternalHeroeEternal Heroe EternalHeroe Data 5 februarie 2012 12:29:38
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
using namespace std;

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

int expresie();
int termen();
int factor();

int n,i,t;
char v[100002];
int main(){
	f.get(v,100002);
	g<<expresie();
	return 0;
}

int expresie()
{
	int r=termen();
	while(v[i]=='+' || v[i]=='-')
	{
		if(v[i]=='+')
		{
			i++;
			r+=termen();
		}else
		{
			i++;
			r-=termen();
		}
	}
	return r;
}

int termen()
{
	int r=factor();
	while(v[i]=='*' || v[i]=='/')
	{
		if(v[i]=='*')
		{
			i++;
			r*=factor();
		}else
		{
			i++;
			r/=factor();
		}
	}
	return r;
}

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