Foros del Web » Programación para mayores de 30 ;) » Programación General »

no me da la cabeza... :x

Estas en el tema de no me da la cabeza... :x en el foro de Programación General en Foros del Web. la cosa parece facil pero no se tengo 2 tipos de Articulo, Compuesto y Simple cada uno tiene (entre otras cosas) stock. el stock de ...
  #1 (permalink)  
Antiguo 08/12/2008, 11:43
Avatar de sanchy  
Fecha de Ingreso: octubre-2008
Mensajes: 389
Antigüedad: 15 años, 6 meses
Puntos: 9
no me da la cabeza... :x

la cosa parece facil pero no se

tengo 2 tipos de Articulo, Compuesto y Simple

cada uno tiene (entre otras cosas) stock.
el stock de Simple se modifica manualmente

el stock del complejo se calcula:
un Ropero(Compuesto) precisa, 2 pestillos, 2 puertas, 4 patas, 1 techo

stocks:
pestillos: 10
puertas: 10
patas: 4
techos: 10

el stock de Ropero viene a ser "1" por q solo hay patas suficientes para hacer 1

ahora...

dichos articulos Simples estan en un ArrayList dentro de Ropero

no me da la cabeza para hacer una funcion generica que calcule el stock del Ropero

el tema es q los articulos Simples de Ropero pueden variar, ser esos 4 o 1000 mas

a alguien se le ocurre? espero haberme expresado bien :x
  #2 (permalink)  
Antiguo 08/12/2008, 12:24
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: no me da la cabeza... :x

Lo que buscas es el mínimo de los valores de stock[componente] / articulo[componente].

Código:
componentesEnStock = { pestillo: 213, puerta: 45, pata: 506, techo: 44 ... }

componentesParaRopero = { pestillo: 2, puerta: 2, pata: 4, techo: 1 }


funcion maximoArticulosConStockExistente( articulo, stock ) {
    var maximoArticulos = 100000000;
    for ( componente en articulo ) {
        if (Redondeo(stock.componente / articulo.componente) < maximoArticulos) {
            maximoArticulos = Redondeo(stock.componente / articulo.componente);
        }
    }
    return maximoArticulos;
}
Con el ejemplo puesto esto haría:
1. Cojemos pestillo.
2. 213 / 2 -> 106
3. 106 < 10000000000, así que maximo = 106
4. Cojemos puerta
5. 45 / 2 -> 22
6. 22 es menor que 106, así que maximo = 22
7. Cojemos pata
8. 506/4 -> 126
9. 126 no es menor que 22, así que maximo sigue igual (22)
10. Cojemos techo
11. 44/1 -> 44
12. 44 no es menor que 22, así que maximo sigue igual (22)
13. Devolvemos maximo que es 22.

Como ves la idea es genérica y no importa cuántos ni cuales componentes tiene el artículo compuesto.

La única pega es la inicialización de maximoArticulos a 100000000. Sería un poco más elegante hacer que se inicialice con el primer valor (stock.componentes[0] / articulo.componentes[0]).


Si no te queda clara la explicación, pregunta.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:20.