Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema de lógica

Estas en el tema de Problema de lógica en el foro de PHP en Foros del Web. Hola, estoy tratando de resolver lo sig: Tengo 2 packaging que se distribuirían de la siguiente manera: Packaging 1: Entra un solo producto Packaging 2: ...
  #1 (permalink)  
Antiguo 10/12/2013, 14:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 4
Problema de lógica

Hola, estoy tratando de resolver lo sig:

Tengo 2 packaging que se distribuirían de la siguiente manera:
Packaging 1: Entra un solo producto
Packaging 2: Entran dos productos.

Bien, si yo tengo 3 productos debería aplicar la siguiente combinación:
Packaging 1 y 2.

Si tengo 5 productos debería aplicar la siguiente combinación:
Packaging 1 y el 2 x2 (dos veces)

Estoy hace unas horas tratando de encontrarle la vuelta, seguramente es sencillo pero medio que ya me quemé y por eso no la encuentro...

Lo que hice fue lo siguiente:
Código PHP:
    $resto $paquetes[9] % 2;
    
$div $paquetes[9] / 2;
    
    if (!
$resto)
    {
        print 
'Paquetes 2: '$div;
    }
    else
    {
        if (
$paquetes[9] > 1)
        {            
            
$paq $paquetes[9];
            
$paq1 0;
            
$paq2 0;
            
            while (
$paq 1)
            {
                
$div $paq 2;
                
$round round($div0PHP_ROUND_HALF_UP);
                
$resto $round 2;
            
                if (
$resto)
                {
                    
$paq3++;
                    
$paq -= 2;
                }
                else
                {
                    
$paq2++;
                    
$paq--;
                }                
            }
            
            print 
'Paquetes 1: '$paq1;    
            print 
'<br />';
            print 
'Paquetes 2: '$paq2;
        }
        else
        {
            print 
'Paquetes 1: 1';
        }
    } 
Funciona bien, supongo que de casualidad... el tema es que cuando tengo 7 productos ahí hace mal el cálculo.

La combinación correcta sería:
Packaging 1 y 2 (x3)

Gracias de antemano.
  #2 (permalink)  
Antiguo 10/12/2013, 20:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Problema de lógica

No sé para qué haces las divisiones, realmente no les veo utilidad; aparte, tienes $paq1 y $paq2, sin embargo, dentro del while incrementas $paq3.

Sin las divisiones sería algo como:

Código:
paq1 = paq2 = 0
total = 9 // Total de paquetes

while(total > 0) {
         if(total >=2) {
                 total -= 2
                 paq2 ++
         } else {
                 total --
                 paq1 ++
         }
}
La cosa es sencilla, si el total es mayor o igual a 2, incrementas paq2, de lo contrario incrementas paq1
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 11/12/2013, 07:01
 
Fecha de Ingreso: septiembre-2008
Mensajes: 43
Antigüedad: 16 años, 2 meses
Puntos: 4
Respuesta: Problema de lógica

Cita:
Iniciado por Triby Ver Mensaje
No sé para qué haces las divisiones, realmente no les veo utilidad; aparte, tienes $paq1 y $paq2, sin embargo, dentro del while incrementas $paq3.

Sin las divisiones sería algo como:

Código:
paq1 = paq2 = 0
total = 9 // Total de paquetes

while(total > 0) {
         if(total >=2) {
                 total -= 2
                 paq2 ++
         } else {
                 total --
                 paq1 ++
         }
}
La cosa es sencilla, si el total es mayor o igual a 2, incrementas paq2, de lo contrario incrementas paq1
Hola, gracias por tu respuesta. Lo pude resolver de la siguiente manera:

Código PHP:
    $paq $paquetes[9] / 2;
    
$paq2 round($paq0PHP_ROUND_HALF_DOWN);
    
$resto $paq $paq2;
    
    if (
$resto 0)
        
$paq1 1;
    
    print 
'Paquetes 1: '. (int) $paq1;    
    print 
'<br />';
    print 
'Paquetes 2: '. (int) $paq2
Saludos

Etiquetas: encuentro
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 22:05.