https://foro.gambas-es.org/viewtopic.php?f=15&t=8006&p=48295#p48295
-----------------------------------
Shell
Monday, 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


