Cod sursa(job #2793149)

Utilizator Bogdan.paun50Mandresi Bogdan Bogdan.paun50 Data 3 noiembrie 2021 02:48:22
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
#include <iostream>

using namespace std;

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

char a[100010];
int i;

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

int expresie()
{
	int rez = termen();
	while(a[i] == '+' || a[i] == '-')
		if (a[i] == '+')
		{
			i++;
			rez += termen();
		}
		else
		{
			i++;
			rez -= termen();
		}
    return rez;
}

int termen()
{
	int rez = factor();
	while(a[i] == '*' || a[i] == '/')
		if (a[i] == '*')
		{
			i++;
			rez *= factor();
		}
		else
		{
			i++;
			rez /= factor();
		}
    return rez;
}

int factor()
{
	int rez;
	if(a[i] == '(')
	{
		i++;
		rez = expresie();
		i++;
	}
	else
	{
		rez = 0;
		while (a[i] >= '0' && a[i] <= '9')
		{
			rez = rez * 10 + a[i] - '0';
			i++;
		}
	}
	return rez;
}

int main()
{
	fin >> a;
	fout << expresie();
}