Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] return resultado de condicional.

Estas en el tema de return resultado de condicional. en el foro de PHP en Foros del Web. hola amigos. estoy tratando de ordenar 3 palabras alfabeticamente por medio de una funcion y no logro llegar al resultado. este es el codigo que ...
  #1 (permalink)  
Antiguo 07/07/2016, 17:03
Avatar de ignacio85r  
Fecha de Ingreso: mayo-2010
Ubicación: mar del plata
Mensajes: 155
Antigüedad: 13 años, 11 meses
Puntos: 0
return resultado de condicional.

hola amigos. estoy tratando de ordenar 3 palabras alfabeticamente por medio de una funcion y no logro llegar al resultado.
este es el codigo que tengo hasta ahora

Código PHP:

$word1 
"casa";
$word2 "ferrocarril";
$word3 "xilofon";


//function

function wordSort($word1$word2$word3){
        
    if (
$word1 $word2 && $word1 $word3) {
            if (
$word2 $word3) {
                
$result "$word1 $word2 $word3";
            } elseif (
$word3 $word2) {
                
$result "$word1, $word2, $word3";
            }
        elseif (
$word2 $word1 && $word2 $word3) {
            if (
$word1 $word3) {
                
$result "$word2, $word1, $word3";
            } elseif (
$word3 $word1) {
                
$result "$word2, $word3, $word1";
            }
        } elseif (
$word3 $word1 && $word3 $word2) {
            if (
$word1 $word2) {
                
$result "$word3, $word1, $word2";
            } elseif (
$word2 $word1) {
                
$result "$word3, $word2, $word1";
            }
        }    
    }

    return 
$result;    
}
    

echo 
"Ordenadas alfabeticamente:".wordSort();

?> 
al ejercicio lo pude hacer bien anteriormente, solo que ahora quise incluirlo dentro de una funcion y no me sale.....

desde ya agradecere cualquier comentario o ayuda que puedan brindarme...
__________________
Los manuales existen por un motivo... explicar el funcionamiento de algo. ;-)
  #2 (permalink)  
Antiguo 07/07/2016, 17:16
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: return resultado de condicional.

La función recibe 3 parametros, en tu echo no los estas enviando, que esten definidos no quiere decir que la funcion los ejecutará automaticamente.... tendria que ser el hecho algo como:

Código PHP:
Ver original
  1. echo "Ordenadas alfabeticamente:".wordSort($word1, $word2,$word3);

la sintaxis de las funciones es: nombre_funcion($parametros);
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 08/07/2016, 13:33
Avatar de ignacio85r  
Fecha de Ingreso: mayo-2010
Ubicación: mar del plata
Mensajes: 155
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: return resultado de condicional.

paso los parametros como dices pero tampoco los imprime.

Código PHP:
<?php


$word1 
"casa";
$word2 "ferrocarril";
$word3 "xilofon";



//function

function wordSort($word1$word2$word3){
        
    if (
$word1 $word2 && $word1 $word3) {
            if (
$word2 $word3) {
                
$result "$word1 $word2 $word3";
            } elseif (
$word3 $word2) {
                
$result "$word1, $word2, $word3";
            }
        elseif (
$word2 $word1 && $word2 $word3) {
            if (
$word1 $word3) {
                
$result "$word2, $word1, $word3";
            } elseif (
$word3 $word1) {
                
$result "$word2, $word3, $word1";
            }
        } elseif (
$word3 $word1 && $word3 $word2) {
            if (
$word1 $word2) {
                
$result "$word3, $word1, $word2";
            } elseif (
$word2 $word1) {
                
$result "$word3, $word2, $word1";
            }
        }    
    }

    return 
$result;    
}
    

    echo 
"Ordenadas alfabeticamente:".wordSort($word1$word2,$word3);

?>
__________________
Los manuales existen por un motivo... explicar el funcionamiento de algo. ;-)
  #4 (permalink)  
Antiguo 08/07/2016, 13:57
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: return resultado de condicional.

estas utilizando operadores de comparacion en cadenas de texto, esta mas que claro que no te va a servir, primero deberias de almacenar la cantidad de caracteres de la cadena en cada variable y luego enviarla a la funcion, a partir de alli ya queda de tu parte el resto
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 08/07/2016, 14:16
Avatar de ignacio85r  
Fecha de Ingreso: mayo-2010
Ubicación: mar del plata
Mensajes: 155
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: return resultado de condicional.

pero debo ordenarlas alfabeticamente, no contar la cantidad de caracteres de cada palabra
__________________
Los manuales existen por un motivo... explicar el funcionamiento de algo. ;-)
  #6 (permalink)  
Antiguo 08/07/2016, 14:20
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: return resultado de condicional.

Aqui algo un poco modificado:

Código PHP:
Ver original
  1. function posicion($X){
  2.  
  3.     //recibo y cuento los caracteres
  4.     $letra_can =  strlen($X);
  5.     //registro los caracteres menos uno
  6.     $cuenta = ($letra_can - 1);
  7.     //busco la primera letra de la cadena
  8.     $letra_B = substr($X, 0, -$cuenta );
  9.  
  10.     //letras del alfabeto
  11.     $letras = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z');
  12.  
  13.     //almaceno la posicion de la letra en el array y le sumo un digito
  14.     $letra_C = array_search($letra_B, $letras);
  15.  
  16.     //retorno el numero a comparar
  17.     return ($letra_C + 1);
  18. }
  19.  
  20.  
  21. //cadenas a comparar
  22. $wordA = "casa";
  23. $wordB = "ferrocarril";
  24. $wordC = "xilofon";
  25.  
  26. //variables en las que amaceno el numero a comparar
  27. $word1A = posicion($wordA);
  28. $word2A = posicion($wordB);
  29. $word3A = posicion($wordC);
  30.  
  31. //function
  32. function wordSort($word1, $word2, $word3){
  33.  
  34.     if ($word1 > $word2 && $word1 > $word3) {
  35.  
  36.             if ($word2 > $word3) {
  37.                 $result = "A B C";
  38.             } else if ($word3 > $word2) {
  39.                 $result = "A B C";
  40.             }
  41.  
  42.         }else if ($word2 > $word1 && $word2 > $word3) {
  43.  
  44.             if ($word1 > $word3) {
  45.                 $result = "B A C";
  46.             } else if ($word3 > $word1) {
  47.                 $result = "B C A";
  48.             }
  49.         //fin segundo
  50.         } else if ($word3 > $word1 && $word3 > $word2) {
  51.             if ($word1 > $word2) {
  52.                 $result = "C A B";
  53.             } else if ($word2 > $word1) {
  54.                 $result = "C B A";
  55.             }
  56.         }//fin tercero    
  57.  
  58.     return $result;    
  59. }
  60.    
  61.  
  62.     echo "Ordenadas alfabeticamente:".wordSort($word1A, $word2A, $word3A);

pruebalo y ve si es lo que buscas
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 08/07/2016, 14:46
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: return resultado de condicional.

aqui una modificacion pasandole los datos mediante un array, ya que retornando las variables genera un error:

Código PHP:
Ver original
  1. function posicion($X){
  2.  
  3.     //recibo y cuento los caracteres
  4.     $letra_can =  strlen($X);
  5.     //registro los caracteres menos uno
  6.     $cuenta = ($letra_can - 1);
  7.     //busco la primera letra de la cadena
  8.     $letra_B = substr($X, 0, -$cuenta );
  9.  
  10.     //letras del alfabeto
  11.     $letras = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z');
  12.  
  13.     //almaceno la posicion de la letra en el array y le sumo un digito
  14.     $letra_C = array_search($letra_B, $letras);
  15.  
  16.     //retorno el numero a comparar
  17.     return ($letra_C + 1);
  18. }
  19.  
  20.  
  21. //cadenas a comparar
  22. $wordA = "casa";
  23. $wordB = "ferrocarril";
  24. $wordC = "xilofon";
  25.  
  26. $datos = array(
  27.     'A' => "casa",
  28.     'B' => "ferrocarril",
  29.     'C' => "xilofon",
  30.  
  31.     );
  32.  
  33. //variables en las que amaceno el numero a comparar
  34. $word1A = posicion($wordA);
  35. $word2A = posicion($wordB);
  36. $word3A = posicion($wordC);
  37.  
  38. //function
  39. function wordSort($word1, $word2, $word3, $Y){
  40.  
  41.     if ($word1 > $word2 && $word1 > $word3) {
  42.  
  43.             if ($word2 > $word3) {
  44.                 $result =  $Y['A']." ".$Y['B']." ".$Y['C'];
  45.             } else if ($word3 > $word2) {
  46.                 $result =  $Y['A']." ".$Y['B']." ".$Y['C'];
  47.             }
  48.  
  49.         }else if ($word2 > $word1 && $word2 > $word3) {
  50.  
  51.             if ($word1 > $word3) {
  52.                 $result =  $Y['B']." ".$Y['A']." ".$Y['C'];
  53.             } else if ($word3 > $word1) {
  54.                 $result =  $Y['B']." ".$Y['C']." ".$Y['A'];
  55.             }
  56.         //fin segundo
  57.         } else if ($word3 > $word1 && $word3 > $word2) {
  58.             if ($word1 > $word2) {
  59.                 $result =  $Y['C']." ".$Y['A']." ".$Y['B'];
  60.             } else if ($word2 > $word1) {
  61.                 $result =  $Y['C']." ".$Y['B']." ".$Y['A'];
  62.             }
  63.         }//fin tercero    
  64.  
  65.     return $result;    
  66. }
  67.    
  68.  
  69.     echo "Ordenadas alfabeticamente:".wordSort($word1A, $word2A, $word3A, $datos);
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 08/07/2016, 14:49
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: return resultado de condicional.

Ahora el orden de las palabras debes ordenarlo mejor, porque los resultados no estan saliendo ordenados de acuerdo a la posicion de la primera letra en el array de caracteres
__________________
[email protected]
HITCEL
  #9 (permalink)  
Antiguo 08/07/2016, 14:57
Avatar de ignacio85r  
Fecha de Ingreso: mayo-2010
Ubicación: mar del plata
Mensajes: 155
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: return resultado de condicional.

percfecto! ya lo entendi! mucghas gracias!
__________________
Los manuales existen por un motivo... explicar el funcionamiento de algo. ;-)

Etiquetas: resultado, 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 10:11.