Cod sursa(job #2403946)

Utilizator SmokeCiocotisan Cosmin Smoke Data 12 aprilie 2019 09:18:10
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.08 kb
//#include "pch.h"
#include <iostream>
#include <fstream>
#define MAX 1000100
using namespace std;

char expr[MAX], *p = expr;

long expresie();
long termen();

long eval()
{
	long  r = termen();

	while (*p == '+' || *p == '-')
	{

		switch (*p)
		{
		case '+':   ++p;
			r = r + termen();
			break;

		case '-': ++p;
			r = r - termen();
			break;

		}
		

	}
	return r;
}

long termen()
{

	long  r = expresie();

	while (*p == '*' || *p == '/')
	{
		switch (*p)
		{
		case '*': ++p;
			r = r * expresie();
			break;

		case '/': ++p;
			r = r / expresie();
			break;
		}


	}

	return r;

}

long expresie()
{

	long r = 0;

	if (*p == '(')
	{
		++p;
		r = eval();
		++p;
	}
	else
	{
		while (*p >= '0' && *p <= '9')
		{
			r = r * 10 + *p - '0';
			p++;

		}

	}

	return r;


}




void citire()
{
	  ifstream in("evaluare.in");

	in.getline(expr, MAX);

	

   in.close();

}

int main()
{
	citire();
	ofstream out("evaluare.out");

	out << eval();



	out.close();

	return 0;
}