Cod sursa(job #1141033)

Utilizator OviTzu24Carabian Ovidiu OviTzu24 Data 12 martie 2014 15:24:04
Problema Evaluarea unei expresii Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<cstdio>
#include<stdio.h>
#include<fstream>
#include<stdlib.h>
using namespace std;

const int nr = 10000;

#ifdef _WIN32
#define _CRT_SECURE_NO_DEPRECATE
#endif

char S[nr], *p = S;
int eval();
int f();
int number();

int eval()
{
	int x = f();
	while ((*p == '+') || (*p == '-'))
	{
		if (*p == '+') ++p, x += f();
		else
		if (*p == '-') ++p, x -= f();
	}

	return x;
}

int f()
{
	int x = number();
	while ((*p == '/') || (*p == '*'))
	{
		if (*p == '*') ++p, x *= number();
		else
		if (*p == '/') ++p, x /= number();
	}

	return x;
}

int number()
{
	int x = 0;
	if (*p == '(') ++p, x = eval(), ++p;
	else
	while (*p >= '0' && '9' >= *p)
		x = x * 10 + (*p - '0'), ++p;

	return x;
}


int main()
{
	fstream cin("evaluare.in", ios::in);
	fstream cout("evaluare.out", ios::out);
	cin.getline(S, nr);
	cout << eval() << '\n';
	return 0;
}