Cod sursa(job #1076905)

Utilizator drobertDumitru Robert drobert Data 10 ianuarie 2014 18:27:52
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream cin( "evaluare.in" );
ofstream cout( "evaluare.out" );

char s[ 100001 ], *p;

int termen();
int factor();

int evaluare()
{
	int t;
	t = termen();
	while ( *p == '+' || *p == '-' )
		if ( *p == '+' )
		{
			p++;
			t += termen();
		}
		else
		{
			p++;
			t -= termen();
		}
	return t;
}

int termen()
{
	int t;
	t = factor();
	while ( *p == '*' || *p == '/' )
		if ( *p == '*' )
		{
			p++;
			t *= factor();
		}
		else
		{
			p++;
			t /= factor();
		}
	return t;
}

int factor()
{
	int t = 0;
	if ( *p == '(' )
	{
		p++;
		t = evaluare();
		p++;
	}
	else while ( '0' <= *p && *p <= '9' )
	{
		t = t * 10 + *p - '0';
		p++;
	}
	return t;
}

int main()
{
	cin >> s;
	p = s;
	cout << evaluare();
}