Cod sursa(job #1263835)

Utilizator LegionHagiu Stefan Legion Data 15 noiembrie 2014 10:52:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
string s;
int p = 0;
int evalueaza();
int datermen();
int inmultiri();
int datermen()
{
	int r=0;
	if (s[p] == '(')
	{
		p++;
		r=evalueaza();
		p++;
	}
	else
	{
		while (s[p] >= '0'&&s[p] <= '9')
		{
			r = r * 10 + s[p] - 48;
			p++;
		}
	}
	return r;
}
int inmultiri()
{
	int r;
	r = datermen();
	while (s[p] == '*' || s[p] == '/')
	{
		if (s[p] == '*')
		{
			p++;
			r *= datermen();
		}
		if (s[p] == '/')
		{
			p++;
			r /= datermen();
		}
	}
	return r;
}
int evalueaza()
{
	int r;
	r=inmultiri();
	while (s[p] == '+' || s[p] == '-')
	{
		if (s[p] == '+')
		{
			p++;
			r += inmultiri();
		}
		if (s[p] == '-')
		{
			p++;
			r -= inmultiri();
		}
	}
	return r;
}
int main()
{
	ifstream in("evaluare.in");
	ofstream out("evaluare.out");
	in >> s;
	s += ' ';
	out<<evalueaza();
}