Cod sursa(job #1497305)

Utilizator ArkinyStoica Alex Arkiny Data 6 octombrie 2015 17:24:21
Problema Evaluarea unei expresii Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<fstream>
#include<iostream>
#include<string.h>
using namespace std;

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

char v[100000];
int adunare();
int i = 0;
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;
		int a = adunare();
		++i;
		return a;
	}
} 
int inmultire()
{
	int t1 = exp();
	while (v[i] == '*' || v[i] == '/')
	{
		if (v[i] == '*')
		{
			++i;
			t1 *= exp();

		}
		else
		{
			++i;
			t1 /= exp();
		}

	}
	return t1;
}

int adunare()
{
	int t1 = inmultire();
	while (v[i] == '+' || v[i] == '-')
	{
		if (v[i] == '+')
		{
			++i;
		    t1 += inmultire();
			
		}
		else
		{
			++i;
			t1 -= inmultire();
		}

	}
		

		return t1;
}


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