Cod sursa(job #3321619)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 10 noiembrie 2025 16:14:56
Problema Evaluarea unei expresii Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <iostream>
#include <cctype>
#include <fstream>
#define mod 666013
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
char c;
int operate(char c, int a, int b) {
	if (c == '+')return a + b;
	if (c == '-')return a - b;
	if (c == '/')return a / b;
	if (c == '*')return a * b;
}
int sum();
int num() {
	in >> c;
	if (c == '(') {
		int suma = sum();
		in >> c;
		return suma;
	}
	int n = 0;
	while (isdigit(c)) {
		n = n * 10 + (c - '0');
		if (!(in >> c)) {
			c = ')';
			break;
		}
	}
	return n;
}
int prod() {
	char op = '*';
	int n = 1;
	while (op == '*' || op == '/') {
		n = operate(op, n, num());
		op = c;
	}
	return n;
}
int sum() {
	char op = '+';
	int n = 0;
	while (op == '+' || op == '-') {
		n = operate(op, n, prod());
		op = c;
	}
	return n;
}
int main()
{
	out<< sum();
	return 0;
}