Cod sursa(job #3312959)

Utilizator DobraVictorDobra Victor Ioan DobraVictor Data 30 septembrie 2025 23:31:02
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>
#include <stdint.h>

const int32_t MAX_LEN = 100000;

int32_t ind = 0;
char str[MAX_LEN + 1];

int32_t ReadAdd();
int32_t ReadVal() {
	if(str[ind] == '(') {
		++ind;
		int32_t res = ReadAdd();
		++ind;

		return res;
	} else {
		int32_t res = 0;
		for(; str[ind] >= '0' && str[ind] <= '9'; ++ind)
			res = res * 10 + (str[ind] - '0');
		
		return res;
	}
}
int32_t ReadMult() {
	int32_t res = ReadVal();

	while(str[ind] == '*' || str[ind] == '/') {
		char op = str[ind++];
		if(op == '*') {
			res *= ReadVal();
		} else {
			res /= ReadVal();
		}
	}

	return res;
}
int32_t ReadAdd() {
	int32_t res = ReadMult();

	while(str[ind] == '+' || str[ind] == '-') {
		char op = str[ind++];
		if(op == '+') {
			res += ReadMult();
		} else {
			res -= ReadMult();
		}
	}

	return res;
}

int main() {
	std::ifstream fin("evaluare.in");
	std::ofstream fout("evaluare.out");

	fin >> str;
	fout << ReadAdd();

	fin.close();
	fout.close();

	return 0;
}