Cod sursa(job #723794)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 25 martie 2012 20:46:12
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include<fstream>
#define NMAX 100010

using namespace std;

char a[NMAX];
int i;

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

void Citeste()
{
	f.getline(a, NMAX);
}

int grad1();

int grad3()
{
	int rez=0;
	if (a[i]=='(') ++i, rez=grad1(), ++i;
	else 
	{
		/*if (a[i]==)++i;*/
		while (a[i]>='0' && a[i]<='9') rez=rez*10+a[i]-'0', ++i;
	}
	return rez;
}

int grad2()
{
	int rez=grad3();
	while (a[i]=='*' || a[i]=='/')
		if (a[i]=='*') ++i, rez*=grad3();
			else ++i, rez/=grad3();
	return rez;
}

int grad1()
{
	int rez=grad2();
	while (a[i]=='+' || a[i]=='-') 
		if (a[i]=='+') ++i, rez+=grad2();
			else ++i, rez-=grad2();
	return rez;
}

int main()
{
	Citeste();
	int rez;
	rez=grad1();
	g<<rez<<"\n";
	f.close();
	g.close();
	return 0;
}