Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Pares entre 30 y 40

Estas en el tema de Pares entre 30 y 40 en el foro de PHP en Foros del Web. Hola a todos Foros web!!! Bueno este es uno de los foros por lo que veo que son más usados frecuentemente.. asi que posteo mi ...
  #1 (permalink)  
Antiguo 11/11/2013, 11:57
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Pregunta Pares entre 30 y 40

Hola a todos Foros web!!! Bueno este es uno de los foros por lo que veo que son más usados frecuentemente.. asi que posteo mi duda.

Tengo un programa que pide lo siguiente: (PHP)

FUNCIONES QUE DEVUELVEN UN VALOR (CON RETURN)
- Declarar un array de números enteros en el programa ppal. Obtener en una función
si hay al menos un número par y entre 30 y 40 (inclusives).
La función debe devolver un uno o un cero dependiendo si existe o no.
Visualizar el mensaje correspondiente en otra función. Por ejemplo:
"si existe" o "no existe".

Hasta ahora tengo este código que pensaba que me funcionaba pero no es así, ya que hoy lo estuve mirando.
Y siempre me devuelve 1 como si hubieran pares entre 30 y 40,, aunque los borre esos números del array.
Dejo mi código haber si alguien sabe como arreglarlo
Código PHP:
Ver original
  1. echo "Devuelve los valores PARES entre 30 y 40. <br/>";
  2.     echo "Numeros son 2,30,32,38,8,41,12 <br/>";
  3.    
  4.     //variables
  5.     $los_numeros = array(2,30,32,38,8,41,12);
  6.     $respu = algun_par($los_numeros);  
  7.    
  8.     function algun_par($los_numeros) {
  9.        
  10.             for($i=0; $i< count($los_numeros); $i++) {
  11.                
  12.                 if($los_numeros[$i] % 2 == 0 && $los_numeros[$i] >=30 && $los_numeros[$i] <=40) {
  13.                    
  14.                     return 1;
  15.                                        
  16.                 }
  17.                 else {
  18.                     return 0;
  19.                        
  20.                 }
  21.             }      
  22.     }  
  23.  
  24.     //Función visualizar
  25.    
  26.     function pares($respu) {
  27.        
  28.                 if($respu == 1 ) {
  29.                         echo "Si existen pares <br/>";
  30.                 }
  31.                 else {
  32.                         echo "No existen pares <br/>"; 
  33.                 }
  34.     }      
  35.                
  36.     //Llamar la función visualizar resultado
  37.     pares($respu);

Tengo que hacerlo con return en la función 1, y luego otra función que visualice "si existe" si la función "algun_par" devuelve 1.
Y que devuelva "no existe" si la funcion "algun_par" devuelve 0.

Pero mi error es que siempre devuelve el 1, y siempre me da "si existe"... En concreto que no funciona correctamente.

Espero alguna ayuda.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1
  #2 (permalink)  
Antiguo 11/11/2013, 12:17
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: Pares entre 30 y 40

Tienes un problema en la lógica de tu función algun_par, no puedes usar ese else porque return detiene la ejecución del for y se va a detenerse en el primer número que no cumpla con tu condición. Se soluciona así:

Código PHP:
Ver original
  1. function algun_par($los_numeros) {
  2.     for ($i = 0, $j = count($los_numeros); $i < $j; $i++) {
  3.         if ($los_numeros[$i] % 2 == 0 && $los_numeros[$i] >= 30 && $los_numeros[$i] <= 40) {
  4.             return 1;
  5.         }
  6.     }
  7.     return 0;
  8. }

Primero buscas números pares entre 30 y 40 y luego si no encuentra, la función va a devolver cero.
__________________
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 11/11/2013, 12:28
Avatar de HackID1  
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Pares entre 30 y 40

Muchas gracias es verdad, si estaba dudando de ese else { return 0; } pero no sabia donde poner el return 0;

Gracias algo más que aprendo hoy!!.

Espero le sirva a alguien la solución de este problema en posteriores búsquedas.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1

Etiquetas: rango, return
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 19:50.