Cod sursa(job #2946877)

Utilizator alexlazuLazureanu Alexandru Ioan alexlazu Data 25 noiembrie 2022 11:33:26
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

#include <iostream>

using namespace std;

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

char s[100002];
int p;
int expresie() , termen() , factor();


int main()
{
	in >> s;
	out << expresie();
}

int expresie()
{
	int sum = termen();
	while (s[p] == '+' || s[p] == '-')
	{
		if (s[p] == '+') 
		{
			p++;
			sum += termen();
		}
		else
		{
			p++;
			sum -= termen();
		}
	}
	return sum;
}

int termen()
{
	int prod = factor();
	while (s[p] == '*' || s[p] == '/')
	{
		if (s[p] == '*') {
			p++;
			prod *= factor();
		}
		else {
			p++;
			prod /= factor();
		}
	}
	return prod;
}

int factor()
{
	int val = 0,semn=1;
	while (s[p] == '-')
	{
		semn = -semn;
		p++;
	}
	if (s[p] == '(')
	{
		p++;
		val = expresie();
		p++;
		return semn * val;
	}
	while ('0' <= s[p] && s[p] <= '9')
	{
		val = val * 10 + (s[p] - '0');
		p++;
	}
	return semn * val;
}