Cod sursa(job #1497034)

Utilizator ArkinyStoica Alex Arkiny Data 5 octombrie 2015 23:10:16
Problema Evaluarea unei expresii Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
#include<iostream>
#include<string.h>
using namespace std;

ifstream in("evaluare.in");
ofstream out("evaluare.out");

char v[100000],i=0;
int adunare();
int exp()
{
	if (v[i] != '(')
	{
		int nr = 0;
		while (v[i] >= '0' && v[i] <= '9')
		{
			nr = nr * 10 + v[i] - '0';
			++i;
		}
		return nr;
	}
	else if (v[i] == '(')
	{
		++i;
		return adunare();
	}
} 
int inmultire()
{
	int t1 = exp();
	if (v[i] == '*')
	{
		++i;
		int t2 = inmultire();
		return t1 * t2;
	}
	else if (v[i] == '/')
	{
		++i;
		int t2 = inmultire();;
		return t1 / t2;
	}
	return t1;
}
int scadere()
{
	
		int t1 = inmultire();

		if (v[i] == '-')
		{
			++i;
			int t2 = scadere();
			return t1 - t2;
		}
		return t1;
	
}
int adunare()
{
	
	if (v[i] != '\0')
	{
		int t1 = scadere();

		if (v[i] == ')')
			++i;

		if (v[i] == '+')
		{
			++i;
			int t2 = adunare();
			return t1 + t2;
		}
		return t1;
	}
}


int main()
{
	in >> v;
	out << adunare();
	return 0;
}