Foros del Web » Programando para Internet » PHP »

duda tonta logica impar

Estas en el tema de duda tonta logica impar en el foro de PHP en Foros del Web. hola miren tengo una duda, tonta, supongamos que tengo una variable llamada $a y esta tiene el valor 7, tengo que dividir a la mitad ...
  #1 (permalink)  
Antiguo 30/04/2013, 13:39
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
duda tonta logica impar

hola miren tengo una duda, tonta,

supongamos que tengo una variable llamada $a y esta tiene el valor 7,
tengo que dividir a la mitad y a esa mitad, tengo que imprimir, esa cantidad

la mitad de 7 es 3,5

si hago un for,

for($e=0;$e<3,5;$e++)
{
echo "hola";
}

¿me va a imprimir 4 holas? pero como ? si al principio de todo
la variable era 7 y nunca era 8 como para que al imprimir la mitad, imprima "4 holas"

tendria que imprimir 3,5 "holas"

disculpen, es medio tonto, pero estoy medio mareado
  #2 (permalink)  
Antiguo 30/04/2013, 14:05
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: duda tonta logica impar

A mi no me imprime 4 holas, es un bucle infinito cuando usas coma en vez de punto.

Lo que hace es "redondear" al número más cercano (si usas 3.5 en vez de 3,5).

2.9 = 3
2.1= 3

etc.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #3 (permalink)  
Antiguo 30/04/2013, 14:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: duda tonta logica impar

¿Ya ejecutaste el código para ver lo que sucede?

La única observación que te hago es que los números decimales en PHP se manejan con punto y no con coma.

Código PHP:
// MAL
3,5

// BIEN
3.5 
Y bueno, ¿qué esperas para ejecutar tu código?

No hay duda que se escape al ejemplo.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 30/04/2013, 18:25
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: duda tonta logica impar

bueno el ejemplo hablo de numeros decimales, con punto...

el tema viene por el lado de

por ejemplo tengo tengo 30 dias y tengo que dividirlo en 3.5 partes.

esta claro que sera 3 "partes"
no se como hace .. pero la division da, 8.57

no son 3 partes , son 3.5 partes que cada uno tendra 8,57 dias

ahi ya es medio fulero cuando uso "FOR"

aparte como me ubico ?si, tengo 3,5 cada uno tiene 8.57 dias(los dias seran dias con un par de horas....)
---------------------------

parece una boludez pero me quema el cerebro....(mas por que es una estupidez)



esto si imprime 4 holas. por que? si el for es 3.1?? nunca fue 4

Código PHP:
$div=3.1;

for(
$i=0;$i<$div;$i++)
{

echo 
"hola<br>";

si tengo 8,57 dias ME LO TOMA COMO 9 DIAS???!!!??? EL FOR ITERA NUEVE VECES!!

OCUPA LOS NUEVE DIAS, A LO SUMO QUE OCUPE HORAS DE LA ULTIMA ITERACION,
  #5 (permalink)  
Antiguo 30/04/2013, 18:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: duda tonta logica impar

No estás comparando enteros, haz la ejecución en papel y verás que las iteraciones son:

- 0 < 3.1 - Imprime
- 1 < 3.1 - Imprime
- 2 < 3.1 - Imprime
- 3 < 3.1 - Imprime
- 4 < 3.1 - Finaliza el bucle por que no se cumple la condición.

Si quieres que sólo imprima 3 veces, inicia el for desde 1 o utiliza floor() para calcular el total de impresiones.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 30/04/2013, 21:15
 
Fecha de Ingreso: junio-2010
Mensajes: 752
Antigüedad: 13 años, 10 meses
Puntos: 5
Respuesta: duda tonta logica impar

bueno la idea va a ser que si es decimal el for empieze desde 1... medio feo queda, pero no se...

debe haber una funcion

$valor=is_int($aaaa)

if($valor)
{
$inicio=0;
}else
{
$inicio=1;
}

tal vez se pueda simplificar un poco este algoritmo ...pero bueno

Última edición por vani18; 30/04/2013 a las 21:37
  #7 (permalink)  
Antiguo 01/05/2013, 12:52
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: duda tonta logica impar

Sí se puede simplificar y te lo sugerí en el mensaje anterior: usa floor() (o round() o ceil()) para realizar el cálculo de las veces que deberá aparecer el mensaje.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 01/05/2013, 17:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: duda tonta logica impar

Yo creo que lo mas natural sería convertir los decimales a fracciones, y así, teniendo todo con enteros incrementar en base a la fracción obtenida.

Sencillamente, el problema es de matemáticas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: impar, logica
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 18:27.