Cod sursa(job #3304646)

Utilizator Rares_MihaescuRares-Andrei Mihaescu Rares_Mihaescu Data 25 iulie 2025 18:15:20
Problema Evaluarea unei expresii Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

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

char s[10000];
int i = 0;

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

int expresie() {
	int  x = termen();
	while (s[i] == '+' || s[i] == '-') {
		i++;
		if (s[i - 1] == '+') {
			x += termen();
		}
		else {
			x -= termen();
		}
	}
	return x;
}
int termen() {
	int  x = factor();
	while (s[i] == '*' || s[i] == '/') {
		i++;
		if (s[i - 1] == '*') {
			x *= factor();
		}
		else {
			x /= factor();
		}
	}
	return x;
}
int factor() {
	int x;
	if (s[i] == '(') {
		i++;
		x = expresie();
		i++;
	}
	else {
		x = numar();
	}
	return x;
}
int numar() {
	int x = 0;
	while (s[i] >= '0' && s[i] <= '9') {
		x = x * 10 + (s[i] - '0');
		i++;
	}
	return x;
}

int main()
{
	f >> s;
	g << expresie();
}