Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Elegir La Caja Optima
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Elegir La Caja Optima 
 
Hola, hice una función para elegir la caja optima para que me ayude a elegir las cajas que debo comprar para embalar objetos (de los cuales dispongo las dimensiones xyz)
Es bastante mejorable supongo, así que aquí se las dejo para que, si a alguien le interesa, la mejore o la use como esta.
Los problemas con los que me tope son:
> Elegir el menor valor float de una float[], las opciones .max y .min son para orden en la lista y no para su valor. Podria haber ordernado los datos pero como hay cuatro listas que comparten el mismo orden eso no era viable. Lo solucione pero dando un rodeo bastante largo.
> Orientar el objeto o la caja para que sea optimo el acople. no esta implementado en los tres ejes solo en x-y y es rudimentario.

Public Function BoxChooser(floXi As Float, floYi As Float, floZ As Float) As String
  '' Requiere como parametros de entrada las medidas x,y,z en metros [float]
  '' Y devuelve la caja que cuadre con dicha medidas.

  Dim flo3 As Float ' es el volumen de lo que hay que meter dentro de la caja
  Dim floX, floY As Float ' Dimensiones para intercambio x-y si es necesario

  Dim stxBoxes As New String[]
  Dim stxBoxesX As New Float[] ' Dimension en x de la caja en metros
  Dim stxBoxesY As New Float[] ' Dimension en y de la caja en metros
  Dim stxBoxesZ As New Float[] ' Dimension en z de la caja en metros
  Dim stxBoxes3 As New Float[] ' Volumen de la caja en metros cúbicos
  Dim stxBoxesV As New String[] ' Vendedor de la caja
  Dim floBoxX, floBoxY, floBoxZ, floBox3 As Float ' Dimensiones para los calculoas
  Dim strVendor As String
  Dim strModel As String
  Dim strBox As String ' Codigo de la caja
  Dim intR As Integer ' Uso para recursividad de matriz
  Dim stxWinner3 As New Float[] ' Lista de volumenes seleccionados
  Dim stxWinnerV As New String[] ' Lista de caja-vendedor seleccionados
  Dim strWinner As String
  Dim floWinner, floLoser, floRecursive As Float

  'Acomodar el orden de las medidas X-Y
  Select floXi < floYi
    Case True
      floX = floYi
      floY = floXi
    Case Else
      floX = floXi
      floY = floYi
  End Select

  flo3 = floX * floy * floZ ' Volumen input calculado

  stxBoxes.Clear
  stxBoxesX.Clear
  stxBoxesY.Clear
  stxBoxesZ.Clear
  stxBoxes3.Clear
  stxBoxesV.Clear

  'Cargar la lista de cajas disponibles estandard
  stxBoxes = Split(File.Load(User.Home &/ "boxes.txt"), "\n")

  For Each strBox In stxBoxes

    ' Valores directos
    floBoxX = CFloat(Split(strBox, "x")[0]) * 0.01
    floBoxY = CFloat(Split(strBox, "x")[1]) * 0.01
    floBoxZ = CFloat(Split(strBox, "x")[2]) * 0.01
    strVendor = Split(strBox, "x")[3]
    strModel = Split(strBox, "x")[0] & "x" & Split(strBox, "x")[1] & "x" & Split(strBox, "x")[2]
    ' Valores Calculados

    ' Descarte de volumenes menores de cajas que flo3
    floBox3 = floBoxX * floBoxY * floBoxZ

    If floBox3 >= flo3 Then
      stxBoxesX.Add(floBoxX)
      stxBoxesY.Add(floBoxY)
      stxBoxesZ.Add(floBoxZ)
      stxBoxes3.Add(floBox3)
      stxBoxesV.Add(strModel & "," & strVendor)
    Endif
  Next

  '' Hasta aca la parte de carga de los datos, de ahora en adelante viene el analisis
  For intR = 0 To stxBoxesX.Max
    If stxBoxesX[intR] >= floX Then
      If stxBoxesY[intR] >= floY Then
        If stxBoxesZ[intR] >= floZ Then
          stxWinner3.Add(stxBoxes3[intR])
          stxWinnerV.Add(stxBoxesV[intR])
        Endif
      Endif
    Endif
  Next

  'Primero obtengo el valor maximo
  floLoser = 0
  For intR = 0 To stxWinner3.Max
    If stxWinner3[intR] > floLoser Then
      floLoser = stxWinner3[intR]
    Endif
  Next

  floWinner = floLoser
  For intR = 0 To stxWinner3.Max
    If stxWinner3[intR] < floWinner Then
      floWinner = stxWinner3[intR]
      strWinner = stxWinnerV[intR]
    Endif
  Next

  Return strWinner

End

 


pd: El archivo de texto boxews.txt contiene información dimensional de las cajas posibles mas el vendedor:

20x14x10xVendedor-1
20x15x20xVendedor-1
20x20x20xVendedor-1
30x30x30xVendedor-1
35x25x25xVendedor-1
40x35x40xVendedor-1
40x40x40xVendedor-1
45x45x60xVendedor-2
50x30x30xVendedor-1
50x50x50xVendedor-1
60x40x40xVendedor-1
80x60x50xVendedor-1

Saludos.
 



 
última edición por tincho el Jueves, 02 Junio 2016, 20:39; editado 2 veces 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
Tincho:

  'Acomodar el orden de las medidas X-Y
  Select floXi <floYi> floLoser Then
      floLoser = stxWinner3[intR]
    Endif
  Next
 


Esta parte del código me da error...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
jsbsan escribió:  
Tincho:

  'Acomodar el orden de las medidas X-Y
  Select floXi <floYi> floLoser Then
      floLoser = stxWinner3[intR]
    Endif
  Next
 


Esta parte del código me da error...


ok, si esta mal, pero no se por que en el foro con las etiquetas "code" no queda bien, algo va mal con eso o hay algo que estoy naciendo mal , pero no se que puede ser    (lo edite tres veces), porque en el modificador de code esta gambas.
Bueno de todas maneras subo un txt con el codigo.

Saludos.

boxchooser.txt
Descripción: código de la función que en el editor web del foro no aparece correctamente 
Descargar
Nombre del archivo: boxchooser.txt
Tamaño: 2.99 KB
Descargado: 101 veces
boxchooser.txt
Descripción: código de la función que en el editor web del foro no aparece correctamente 
Descargar
Nombre del archivo: boxchooser.txt
Tamaño: 2.99 KB
Descargado: 101 veces
boxchooser.txt
Descripción: código de la función que en el editor web del foro no aparece correctamente 
Descargar
Nombre del archivo: boxchooser.txt
Tamaño: 2.99 KB
Descargado: 101 veces

 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
tincho escribió:  

ok, si esta mal, pero no se por que en el foro con las etiquetas "code" no queda bien, algo va mal con eso o hay algo que estoy haciendo mal , pero no se que puede ser    (lo edite tres veces), porque en el modificador de code esta gambas.
Saludos.


El problema es el símbolo < y > porque se interpreta como una etiqueta html. Hay que desactivar HTML en el mensaje para que salga bien, usando los checkboxes que hay más abajo al crear o editar los mensajes. Ya lo he corregido en el mensaje inicial.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
En metros, pues si que son grandes las cajas. ¿ Cómo es que no usaste centímetros ?.
Debe ser para algo grande, a mi me valdría con unas buenas cajas resistentes de 2m por 50 o 60. Por ahora.
Es para un negocio que me voy a proponer, con página web y todo.

 suegras

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Elegir La Caja Optima 
 
    
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Caja De Dialogo Personalizada Shell General 4 Martes, 20 Abril 2010, 15:31 Ver último mensaje
chen_08
No hay nuevos mensajes Limitar Caracteres En Una Caja De Texto.Pr... Shell General 3 Martes, 09 Abril 2013, 06:14 Ver último mensaje
codificador
No hay nuevos mensajes Elegir Una Opción v3ctor General 6 Miercoles, 04 Enero 2017, 02:27 Ver último mensaje
v3ctor
No hay nuevos mensajes ¿Podemos Poner La Caja De CheckBox A La D... gambafeliz Controles/Librerías/Componentes 4 Jueves, 05 Septiembre 2019, 14:36 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron