Cod sursa(job #3203003)

Utilizator laurentiu.maticaMatica Laurentiu-Andrei laurentiu.matica Data 12 februarie 2024 20:40:00
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
// #include <iostream>

#include <fstream>
#include <string>

using namespace std;

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

string a;
int i;

int numar();
int termen();
int factor();
int expresie();

int numar()
{
	int num = 0;
	while (a[i] >= '0' && a[i] <= '9')
		num = (a[i++] - '0') + num * 10;
	return num;
}
int factor()
{
	int num;
	if (a[i] == '(')
	{
		i++;
		num = expresie();
		i++;
	}
	else
		num = numar();
	return num;
}
int termen()
{
	int num = factor();
	while (a[i] == '*' || a[i] == '/')
	{
		if (a[i] == '*')
		{
			i++;
			num *= factor();
		}
		else if (a[i] == '/')
		{
			i++;
			num /= factor();
		}
	}
	return num;
}
int expresie()
{
	int num = termen();
	while (a[i] == '+' || a[i] == '-')
	{
		if (a[i] == '+')
		{
			i++;
			num += termen();
		}
		else if (a[i] == '-')
		{
			i++;
			num -= termen();
		}
	}
	return num;
}
int main()
{
	getline(cin, a);
	cout << expresie();
	return 0;
}