https://foro.gambas-es.org/viewtopic.php?f=15&t=8006&p=48295#p48295 ----------------------------------- Shell Lunes, 04 May 2020, 14:14 Re: Problema Del Restaurante. Ejercicio ----------------------------------- Bueno!. :-D Gran interés!. (Ocurre en todos los foros de programación). El problema no es resolver el ejercicio, es usar la lógica para encontrar la mejor solución. Y eso es lo más complicado. Y que se debe ejercer. Forma que lo haríamos, paso a paso. Si tenemos una cantidad de ingredientes y sabemos que necesitamos, podemos ir restando una y otra vez de los ingredientes disponibles y crear un plato, llegará un momento que no podamos hacer más platos. [code linenumbers=false syntax=gambas] ' Procedimiento habitual Public Function numdeplatosv1(docenasdehuevo As Integer, kilosdechorizo As Float) As Integer Dim totalingrediente1 As Integer Dim totalingrediente2 As Float Dim totaldeplatos As Integer 'Cantidad total de los ingredientes 'Unidades totalingrediente1 += docenasdehuevo * 12 'Gramos totalingrediente2 += kilosdechorizo * 1000 'Se necesita para un plato: ' 2 huevos ' 200g de chorizo 'Vamos eliminando de las existencias los ingredientes necesarios por cada plato Repeat totalingrediente1 -= HUEVOSPORPLATO totalingrediente2 -= CHORIZOPORPLATO totaldeplatos += 1 Until totalingrediente1 < 2 Or totalingrediente2 < 200 Return totaldeplatos End [/code] Pero y si...decimos, si se nos acaba uno de los ingredientes necesario para un plato, no tenemos por que continuar....esto resulta un poco más complejo de pensar la primera vez. [code linenumbers=false syntax=gambas] 'Pocedimiento alternativo y más rápido Public Function numdeplatosv2(docenasdehuevo As Integer, kilosdechorizo As Float) As Integer Dim totalingrediente1 As Integer Dim totalingrediente2 As Float 'Cantidad total de los ingredientes 'Unidades totalingrediente1 += docenasdehuevo * 12 'Gramos totalingrediente2 += kilosdechorizo * 1000 'Se necesita para un plato: ' 2 huevos ' 200g de chorizo 'Si se acaba uno de los ingredientes ya no podemos hacer más plato 'Devolvemos la cantidad de platos máximos que se admite con un total de un ingredientes If totalingrediente1 / HUEVOSPORPLATO < totalingrediente2 / CHORIZOPORPLATO Then Return totalingrediente1 / HUEVOSPORPLATO Else Return totalingrediente2 / CHORIZOPORPLATO Endif End [/code] Fijaros que el condicional comprueba dos ingredientes..Pero y si ahora le queremos añadir "patatas fritas!" al plato, ahora serian más ingredientes...esa condición no nos valdría.. Y si...usamos otras cosas.... Saludos