Foros del Web » Programando para Internet » PHP »

Juego: "¿Dónde está el error?"

Estas en el tema de Juego: "¿Dónde está el error?" en el foro de PHP en Foros del Web. aparte del notice por la variable indefinida :P? Código PHP: $a += $a == $a ++,  // (false ($a se incrementa en 1)) 1 $a + $a ,  // (1+1) 2 $a + $a ...

  #421 (permalink)  
Antiguo 26/05/2011, 10:24
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Juego: "¿Dónde está el error?"

aparte del notice por la variable indefinida :P?
Código PHP:
$a+=
$a==$a++, // (false ($a se incrementa en 1)) 1
$a+$a// (1+1) 2
$a+$a++, // (1 + (1+1)) 3
$a*$a// (2*2) 4 
así que el resultado creo que seria

notice: undefined variable: a .... etc
[1234]



saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #422 (permalink)  
Antiguo 26/05/2011, 10:35
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

sip, no había visto tu publicacion!
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #423 (permalink)  
Antiguo 26/05/2011, 10:41
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

Cita:
$a+=

$a==$a++, // (false ($a se incrementa en 1)) 1 // aqui en realidad da true por tanto se guarda como 1

$a+$a, // (1+1) 2

$a+$a++, // (1 + (1+1)) 3 // y aqui en realidad la segunda $a se toma como 1 y queda $a+(1)) = 2 y luego toma el ++

$a*$a; // (2*2) 4
eso se puede comprobar con algo así:

Código PHP:
Ver original
  1. $a=0
  2. echo $a++;
  3. //el resultado es "0";

de todos modos llegaron al mismo resultado [1234] aunque no haya sido correcto XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Última edición por stramin; 26/05/2011 a las 12:41
  #424 (permalink)  
Antiguo 02/06/2011, 21:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

¿Por qué esto
Código PHP:
Ver original
  1. <?php
  2. echo (int)((0.1 + 0.7) * 10);
imprime 7 en vez de 8? Y ¿cómo se puede resolver sin quitar nada de la expresión?, solo añadir.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #425 (permalink)  
Antiguo 03/06/2011, 09:38
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

agregando un "+1" al final queda en 8

:D

hablando en serio, sin borrar ese (int) no se me ocurre como...
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #426 (permalink)  
Antiguo 03/06/2011, 09:51
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Todavía, doy más tiempo, hay que leer para poder saber que ocurre.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #427 (permalink)  
Antiguo 03/06/2011, 09:54
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Juego: "¿Dónde está el error?"

es porque es un numero de punto flotante?
ya que la representación interna seria algo como 7.9999999999999991118
__________________
Agregadecer no cuesta nada O SI?
  #428 (permalink)  
Antiguo 03/06/2011, 10:03
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

si, es la representación binaria de los flotantes, ocurre en todos los lenguajes al sumar numeros con decimal menor que 5 y otro mayor que 5, no solo PHP

0.1+0.7 = 7.9999999999999

O

0.1+0.7 = 8.0000000000001 (esto ocurre en javascript)

la pregunta es como demonios hacer que quede 8 sin quitar ese (int) XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #429 (permalink)  
Antiguo 03/06/2011, 10:07
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

LO TENGO!!!! ROUND()!!!

echo (int)round((0.1 + 0.7) * 10);
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #430 (permalink)  
Antiguo 03/06/2011, 10:12
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Juego: "¿Dónde está el error?"

jajaja si se me fue el internet
<?php
echo (int)round((0.1 + 0.7)*10);
era cosa de pensar nomas
__________________
Agregadecer no cuesta nada O SI?
  #431 (permalink)  
Antiguo 03/06/2011, 10:23
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Bah! Yo estuve intentándolo por 2 días y nada.
  #432 (permalink)  
Antiguo 03/06/2011, 10:27
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por metacortex Ver Mensaje
Bah! Yo estuve intentándolo por 2 días y nada.
jajaja bueno nose yo simplemente lo descrubi en 1minuto leyendo el manual de php sobre numeros enteros
__________________
Agregadecer no cuesta nada O SI?
  #433 (permalink)  
Antiguo 03/06/2011, 10:30
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Bueno al parecer alguien lo descubrió unos minutos antes que tú.
  #434 (permalink)  
Antiguo 03/06/2011, 10:34
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por metacortex Ver Mensaje
Bueno al parecer alguien lo descubrió unos minutos antes que tú.
jajaja es porque di el problema resuelto?
de que en realidad el script botaba 7.99999999999123
y era simplemente pensar que con round lo redondeabas pero
no lei la parte que decia que tenia que poner el codigo o algo asi
sera para la proxima, asi que stramin te toca preguntar :D
__________________
Agregadecer no cuesta nada O SI?
  #435 (permalink)  
Antiguo 03/06/2011, 10:41
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

en mi caso creo que solo fue suerte, probé unas 100 opciones sin lograrlo XD incluso había intentado así:

echo (int)(round(0.1 + 0.7)*10);

lo cual me da 10! XD

(int)(round(0.8)*10)
(int)(1*10)
(int)10

con abimaelrc, gatorV, hidek1, metacortex y Sourcegeek siempre aprendo cosas nuevas y raras XD

con este foro siento que perdí mucho dinero yendo a la universidad D:
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #436 (permalink)  
Antiguo 03/06/2011, 10:41
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por rikardoz Ver Mensaje
Cita:
Iniciado por metacortex Ver Mensaje
Bueno al parecer alguien lo descubrió unos minutos antes que tú.
jajaja es porque di el problema resuelto?
No. Es porque el post de stramin aparece arriba del tuyo.
  #437 (permalink)  
Antiguo 03/06/2011, 10:46
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por stramin Ver Mensaje

con este foro siento que perdí mucho dinero yendo a la universidad D:
yo por eso deje de ir solo fui el primer ciclo jajajajajajaa asjdfjsdn
__________________
Agregadecer no cuesta nada O SI?
  #438 (permalink)  
Antiguo 03/06/2011, 11:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Exacto, pero la mejor forma es trabajando con BC Math. Es decir, la forma como se puede resolver sería
Código PHP:
Ver original
  1. <?php
  2. echo (int)(bcadd(0.1, 0.7, 1) * 10);

Esas funciones, son las indicadas para trabajar con precisiones, ejemplo una suma en PHP así
Código PHP:
Ver original
  1. <?php
  2. $a = '9999999999999999999999999999';
  3. $b = '9999999999999999999999999999';
  4. echo $a + $b; // imprime 2.0E+28 en un OS de 32 bits
Pero con BC Math
Código PHP:
Ver original
  1. <?php
  2. $a = '9999999999999999999999999999';
  3. $b = '9999999999999999999999999999';
  4. echo bcadd($a, $b); // imprime 19999999999999999999999999998
Es importante que se use entre comillas para que las funciones de bc math puedan trabajarlas, ya que php cuando almacena los valores en las variables y son enteros, las va a almacenar como exponenciales. Es decir
Código PHP:
Ver original
  1. <?php
  2. $a = 999999999999999999999999999;
  3. echo $a; // imprime 1.0E+27
y no va a poder trabajarlos con ese dato.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #439 (permalink)  
Antiguo 03/06/2011, 12:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por stramin Ver Mensaje
siempre aprendo cosas nuevas y raras XD
Me preocupa este comentario
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #440 (permalink)  
Antiguo 03/06/2011, 12:58
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Juego: "¿Dónde está el error?"

jajajaja es la verdad en el foro aprendemos muchas cosas leyendo las preguntas de otros y tratando de responderlas, estoy casi todo el dia conectado al foro, ahora esperemos a stramin haga su pregunta y espero que sea un codigo complejo es mas metele POO PHP jaja ;)
__________________
Agregadecer no cuesta nada O SI?
  #441 (permalink)  
Antiguo 03/06/2011, 13:12
Avatar de metacortex
Viejo demente
 
Fecha de Ingreso: junio-2004
Ubicación: Caracas - Venezuela
Mensajes: 9.027
Antigüedad: 19 años, 10 meses
Puntos: 832
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por abimaelrc Ver Mensaje
Me preocupa este comentario
Y tenías que resaltarlo
  #442 (permalink)  
Antiguo 03/06/2011, 13:34
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

Pues es que me preocupa últimamente lo que comentan en estos foros
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #443 (permalink)  
Antiguo 03/06/2011, 14:41
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

XD es que son tan raros aquí

Uno curioso, 2 preguntas

1.- cual debería ser el resultado de esto?

Código PHP:
Ver original
  1. <?php
  2. $array[]+=$array[]+=$array[]+=$array[]+=1;
  3. ?>

2.- que está haciendo el "+=" en la secuencia?

XD

es algo que me toco entender hoy.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #444 (permalink)  
Antiguo 03/06/2011, 15:34
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por stramin Ver Mensaje
1.- cual debería ser el resultado de esto?

Código PHP:
Ver original
  1. <?php
  2. $array[]+=$array[]+=$array[]+=$array[]+=1;
  3. ?>

2.- que está haciendo el "+=" en la secuencia?
1.Resultado del array en sus 4 índices = 1
2.Asignar el valor 1 al array, como no se define índice es el siguiente.

Código PHP:
$array[]+=$array[]+=$array[]+=$array[]+=1;

echo 
$array[0];
echo 
$array[1];
echo 
$array[2];
echo 
$array[3]; 
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #445 (permalink)  
Antiguo 03/06/2011, 15:35
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

cerca pero no XD

es aun mas extraño :O
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #446 (permalink)  
Antiguo 03/06/2011, 15:37
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Juego: "¿Dónde está el error?"

Cita:
Iniciado por stramin Ver Mensaje
cerca pero no XD

es aun mas extraño :O
Entonces voy a aprender algo nuevo
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #447 (permalink)  
Antiguo 03/06/2011, 15:51
Avatar de rikardoz  
Fecha de Ingreso: abril-2011
Ubicación: En mi casa
Mensajes: 165
Antigüedad: 13 años
Puntos: 46
Respuesta: Juego: "¿Dónde está el error?"

mmm simplemente creo que les asiga 1 osea en realidad suma +1 a todo los indices
pero como todos son 0 se suma 0 + 1 ?
es lo que yo pienso nose jaja
Código PHP:
<?
$array
[]+=$array[]+=$array[]+=$array[]+=1;

echo 
"<pre>";
print_r($array);
echo 
"</pre>";
?>
__________________
Agregadecer no cuesta nada O SI?
  #448 (permalink)  
Antiguo 03/06/2011, 16:10
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

pues aunque parezca extraño es eso, el indice $array[] se inicia siempre como una nueva ubicación (siguiente a la anterior), pero al momento de iniciarse esta vacía, por eso se toma como una simple suma de 0 + 1

claro que para llegar a esa conclusión tuve que hacer otra cosa, mira el resultado de esto:

$array[]-=$array[]-=$array[]-=$array[]-=1;

uno creería que el resultado debería ser correlativo (1234 o 4321 o 10-1-2) o quizas el mismo que con la suma (-1 -1 -1 -1) pero tampoco, comprueben ustedes mismos XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #449 (permalink)  
Antiguo 03/06/2011, 16:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Juego: "¿Dónde está el error?"

En array el usar el simbolo de suma lo que hace es como unir (similar a como hace el el punto con texto, o sea concatenar). Como el simbolo de = se asigna de derecha a izquierda entonces primero se asigna al último array el valor de 1 y luego el penultimo array toma el valor y así sucesivamente. Como también está el simbolo de + lo que hace es unir los array y al final queda formando así:
Código PHP:
Ver original
  1. <?php
  2. $array[]+=$array[]+=$array[]+=$array[]+=1;
  3. var_dump($array);
  4. /**
  5.  *Notice: Undefined variable: array in ... on line 2
  6.  *array(4) { [0]=> int(1) [1]=> int(1) [2]=> int(1) [3]=> int(1) }
  7.  */

Edito: Ehhh stramin, creo que tampoco entendías como funcionaba jajajaja
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #450 (permalink)  
Antiguo 03/06/2011, 16:14
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Juego: "¿Dónde está el error?"

prueba el código ese que puse y fijate que no se concatena :)

releyendo lo que pusiste... si al final es eso mismo un suma de 0 + 1 tal como dijo rikardoz, solo que te complicaste mas XD

le toca a rikardoz XD
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D

Etiquetas: a-por-la-vecina-de-meta, juegos
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

SíEste tema le ha gustado a 40 personas




La zona horaria es GMT -6. Ahora son las 12:06.