Foros del Web » Programando para Internet » PHP »

logica de if complicada

Estas en el tema de logica de if complicada en el foro de PHP en Foros del Web. hola una pregunta, tengo que seguir una secuencia de datos como puedo hacer?? un algoritmo no quiero llegar a que sean miles de if. o ...
  #1 (permalink)  
Antiguo 17/01/2014, 13:37
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 8 meses
Puntos: 3
logica de if complicada

hola una pregunta, tengo que seguir una secuencia de datos
como puedo hacer??

un algoritmo
no quiero llegar a que sean miles de if.
o generar 3 array y dentro todos esos numeros, si. un numero esta dentro.. imprime, o "4" o "0" o "1"

si es 1 imprime 1
si es 2 imprime 4
si es 3 imprime 0
si es 4 imprime 1
si es 5 imprime 4
si es 6 imprime 0
si es 7 imprime 1
si es 8 imprime 4
si es 9 imprime 0
si es 10 imprime 1
si es 11 imprime 4
si es 12 imprime 0
si es 13 imprime 1
si es 14 imprime 4
si es 15 imprime 0

y asi seguiria la secuencia hasta el fin ....
  #2 (permalink)  
Antiguo 17/01/2014, 13:56
 
Fecha de Ingreso: mayo-2012
Mensajes: 76
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: logica de if complicada

para sacarte los multiplos de 3 haz
Código PHP:
if ($var == ){
    echo 
0;

creo que te funcionará
  #3 (permalink)  
Antiguo 17/01/2014, 13:57
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: logica de if complicada

Un algoritmo elaborado con algo de prisa (estoy por ir a almorzar ):

Código PHP:
Ver original
  1. $next = 1;
  2.  
  3. for ($i = 1; $i <= 15; $i++){
  4.     switch($next){
  5.         case 1:
  6.             echo "Es " . $i . ", imprime 1<br />";
  7.             $next = 4;
  8.             break;
  9.         case 4:
  10.             echo "Es " . $i . ", imprime 4<br />";
  11.             $next = 0;
  12.             break;
  13.         case 0:
  14.             echo "Es " . $i . ", imprime 0<br />";
  15.             $next = 1;
  16.             break;
  17.     }
  18. }

Esto imprime lo siguiente:

Código HTML:
Ver original
  1. Es 1, imprime 1
  2. Es 2, imprime 4
  3. Es 3, imprime 0
  4. Es 4, imprime 1
  5. Es 5, imprime 4
  6. Es 6, imprime 0
  7. Es 7, imprime 1
  8. Es 8, imprime 4
  9. Es 9, imprime 0
  10. Es 10, imprime 1
  11. Es 11, imprime 4
  12. Es 12, imprime 0
  13. Es 13, imprime 1
  14. Es 14, imprime 4
  15. Es 15, imprime 0

Utilizo una variable que, en cada iteración, cambiará su valor, el cual es el siguiente en imprimirse. El límite del bucle puede variar.

Así es como se ve en ejecución: http://ideone.com/ucZYAC

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 17/01/2014, 14:04
 
Fecha de Ingreso: mayo-2012
Mensajes: 76
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: logica de if complicada

por con ese algoritmo, como le pidan el valor 200.000 te va a tardar sus buenos segundos en cargar...

EDIT: no se si necesita un loop que recorra todo el rato la misma secuencia o que dependiendo el numero que le pase saque el numero que toque.
  #5 (permalink)  
Antiguo 17/01/2014, 14:13
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: logica de if complicada

Hola,

Aquí es donde entra la matemática en el asunto de la programación,

Cita:
Iniciado por Doch Ver Mensaje
para sacarte los multiplos de 3 haz
Código PHP:
if ($var == ){
    echo 
0;

creo que te funcionará
Código PHP:
Ver original
  1. $d = array('0', '1', '4');
  2. for ($i = 1; $i < 10; $i++) {
  3.     echo $i . '=' . $d[$i % 3] . "\n";
  4. }

Saludos,

Última edición por HackmanC; 17/01/2014 a las 14:23 Razón: Error matemático :/
  #6 (permalink)  
Antiguo 17/01/2014, 14:28
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: logica de if complicada

Cita:
Iniciado por Doch Ver Mensaje
por con ese algoritmo, como le pidan el valor 200.000 te va a tardar sus buenos segundos en cargar...

EDIT: no se si necesita un loop que recorra todo el rato la misma secuencia o que dependiendo el numero que le pase saque el numero que toque.
Leí que mencionó algo de crear un array con los datos para hacer las comparaciones, por eso supuse que se trataba de varios datos y no de uno. Si fuera un solo dato, no haría falta el loop, pero si son varios (15 como indicó en la descripción o más), será necesario o bien un bucle o una función recursiva, la cual actuaría como un bucle al fin y al cabo.

Checa que menciona una secuencia de datos.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 17/01/2014, 15:20
 
Fecha de Ingreso: febrero-2013
Ubicación: en mi casa
Mensajes: 541
Antigüedad: 11 años, 8 meses
Puntos: 3
Respuesta: logica de if complicada

no necesariamente 15.

osea, entra un numero cualquiera...

NO SE QUE NUMERO ME VA A ENTRAR.""...

------

PERO TIENE QUE SEGUIR LA SERIE DE 4,0,1

NO DIGO QUE SEAN 15 NUMEROS EXACTOS.

SI ENTRA EL NUMERO 16. TIENE QUE SALIR....1

SI ENTRA EL NUMERO 18 TIENE QUE SALIR, 0

SI ENTRA EL NUMERO 23 TIENE QUE SALIR 4..

------

ENTRA UN NUMERO Y SALE "4" O "0" O "1"
  #8 (permalink)  
Antiguo 17/01/2014, 15:23
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: logica de if complicada

Da igual si son 15, 50 o 100 números, de la forma en que correctamente lo explica HackmanC o con la forma que expuse, vas a obtener los resultados que esperas, solamente cambias el límite del bucle.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: 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 13:01.