Hola a todos. Tengo que hacer un ejercicio que utilice una función recursiva en C++, pero no tengo la más mínima idea de cómo encarar el programa. El programa tiene que hacer operaciones matemáticas básicas (sumas, restas y multiplicaciones, nada más) utilizando el siguiente formato:
Por el canal de entrada: + 4 3
Entonces, se debería hacer la operación "4+3" y debería devolver 8.
Si ponemos: * 8 + 4 3
La operación es "8*(4+3)" y su solución es 56.
Otro ejemplo: * - 2 8 + 4 3
Sería "(2-8)*(4+3)" y el resultado sería -42.
No sé ni cómo comenzar, he pensado en utilizar una función tal que así:
#include <iostream>
using namespace std;
int operacion(bool suma, bool resta, bool mult) {
int resul;
char op;
if (cin >> op) {
if (op == '+') suma = true;
else if (op == '-') resta = true;
else if (op == '*') mult = true;
else {
if (suma) resul = op - '0' + operacion(suma, resta, mult);
if (suma) resul = op - '0' - operacion(suma, resta, mult);
if (mult) resul = op - '0' * operacion(suma, resta, mult);
}
} else return 0;
}
Evidentemente no funciona, ni de cerca. Primero, no sé dónde inicializar "resul", ni tampoco sé cómo desarrollar las operaciones del tipo "* -" como el de "* - 2 8 + 4 3", ni cómo tratar las restas... En fin, que no tengo ni p**a idea.
Una cosa, no tengo permitida la utilización de vectores (por supuesto tampoco strings), ni structs.
Un saludo y gracias de antemano.
Por el canal de entrada: + 4 3
Entonces, se debería hacer la operación "4+3" y debería devolver 8.
Si ponemos: * 8 + 4 3
La operación es "8*(4+3)" y su solución es 56.
Otro ejemplo: * - 2 8 + 4 3
Sería "(2-8)*(4+3)" y el resultado sería -42.
No sé ni cómo comenzar, he pensado en utilizar una función tal que así:
#include <iostream>
using namespace std;
int operacion(bool suma, bool resta, bool mult) {
int resul;
char op;
if (cin >> op) {
if (op == '+') suma = true;
else if (op == '-') resta = true;
else if (op == '*') mult = true;
else {
if (suma) resul = op - '0' + operacion(suma, resta, mult);
if (suma) resul = op - '0' - operacion(suma, resta, mult);
if (mult) resul = op - '0' * operacion(suma, resta, mult);
}
} else return 0;
}
Evidentemente no funciona, ni de cerca. Primero, no sé dónde inicializar "resul", ni tampoco sé cómo desarrollar las operaciones del tipo "* -" como el de "* - 2 8 + 4 3", ni cómo tratar las restas... En fin, que no tengo ni p**a idea.
Una cosa, no tengo permitida la utilización de vectores (por supuesto tampoco strings), ni structs.
Un saludo y gracias de antemano.