Cod sursa(job #724855)

Utilizator dan.paulaDan Paula dan.paula Data 26 martie 2012 19:25:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#include <iostream>
using namespace std;

typedef long long LL;

LL  eval();
LL  prod();
LL  numar();

ifstream fin("evaluare.in");
char elem;

void ScriereFisier(LL rez)
{
	ofstream fout("evaluare.out");	
	fout << rez;
	fout.close();
}
 
LL eval()
{
	LL rez = prod();

	while( elem == '+' || elem == '-')	
	{
		if (elem == '+')	
		{  
			fin >> elem;
			rez = rez + prod();
		}
		if (elem == '-')	
		{
			fin >> elem;
			rez = rez - prod();
		}
	}
	return rez;
}
 
LL prod()
{
	LL rez = numar();

	while (elem == '*' || elem == '/')
	{  
		if (elem == '*')
		{
			fin >> elem;
			rez = rez * numar();
		}
		if (elem == '/')
		{
			fin >> elem;
			rez = rez / numar();
		}
	}
	return rez;
}
 
LL numar()
{
	LL rez = 0;
	
	if (elem == '(')
	{
		fin >> elem;
		rez = eval();
		fin >> elem;
	}
	else
	{
		while (elem >= '0' && elem <= '9' && !fin.eof())
		{
			rez = rez * 10 + (elem - '0');
			fin >> elem;
		}
	}
	return rez;
}

int main()
{
	LL rez;
	fin >> elem;
	rez = eval();
	ScriereFisier(rez);
	return 0;
}