elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Duda tonta con ejercicio en PHP
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda tonta con ejercicio en PHP  (Leído 3,365 veces)
jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Duda tonta con ejercicio en PHP
« en: 14 Octubre 2020, 15:34 pm »

Buenas tengo un problema, necesito un programa que al introducir una frase te la escriba cada caracter con su siguiente, ejemplo:

Hola que tal --> Ipmb rvf ubm

Los espacios los debe dejar igual, y la "z" debe cambiarse por la "a". ahí viene mi problema, ya que no se por que funciona todo salvo este caso, si meto una "z" por cualquier lado me repite la "a" 25 veces (como el abecedario) y no veo el error. Os dejo el código:

Código:
<?php

$frase = $_POST["frase"];

//Creamos el array del abecedario
        $abecedario = 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");
       // $abecedariomayus = array_change_key_case($abecedario, CASEUPPER);
        $numletras = count($abecedario);
       
        /*for($i=0;$i<$numletras;$i++){
            echo $abecedario[$i] . "<br>";
            echo strtoupper($abecedario[$i]) . "<br>";
        }*/
        $resultado="";
        for($i=0;$i<strlen($frase);$i++){
            for($j=0; $j<count($abecedario);$j++){
                if($frase[$i]=="z"){
                    $resultado = $resultado.$abecedario[0];
                }else if ((($frase[$i] == $abecedario[$j])) && ($frase[$i] != "z")){
                    $resultado = $resultado.$abecedario[$j+1];
                }else if($frase[$i]==" "){
                    $resultado = $resultado." ";
                }
            }
        }
       
        echo $resultado;
?>


En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Duda tonta con ejercicio en PHP
« Respuesta #1 en: 14 Octubre 2020, 15:52 pm »

Te la repite 25 veces porque revisas 25 veces si la frase tiene 'z' y como la frase no cambia te sigue agregando la letra 'a'.


En línea

jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Duda tonta con ejercicio en PHP
« Respuesta #2 en: 14 Octubre 2020, 15:58 pm »

¿Y alguna solucion a ese fallo?, probé con ir eliminando el caracter comprobado pero me daba continuamente errores
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: Duda tonta con ejercicio en PHP
« Respuesta #3 en: 14 Octubre 2020, 17:02 pm »

¿Y alguna solucion a ese fallo?, probé con ir eliminando el caracter comprobado pero me daba continuamente errores

Puedes simplemente agregar a $resultado una vez si el carácter es una 'z'. Piensa que no es necesario hacer una revisión por cada carácter del abecedario porque para hacer el cambio de la 'z' a la 'a' ni siquiera estás usando ese diccionario.

De la misma manera, piensa acerca del " " que ahí tampoco estás usando el diccionario. No estás muy lejos de la solución.
En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.841


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Duda tonta con ejercicio en PHP
« Respuesta #4 en: 14 Octubre 2020, 17:13 pm »

Hola, acá el tema es que vos nos tenés que decir o pensar que sigue después de la letra "z", porque obviamente el abecedario termina en la z y vos querés que las letras sean reemplazadas por la letra siguiente del abecedario pero no hay ninguna letra siguiente a z, ahí es donde tenés que hacer con esa letra, con que reemplazarla.

O bien podes hacer que al encontrarse la z la deje como está, es decir que siga con la misma letra y no haya reemplazo o bien que se reemplace por Z mayúscula.

Por otro lado en tu código estás usando 2 bucles que bien podrías usar uno solo y sería suficiente.


Código:
        $resultado="";
        for($i=0;$i<strlen($frase);$i++){
            if($frase[$i]!="z"){
                $resultado += $abecedario[$i + 1]
             }
             else {
                $resultado += 'Z';
        }

Cómo la condición a cumplir es muy simple, podes usar un if de condición simple:

https://www.php.net/manual/es/control-structures.if.php



Saludos
« Última modificación: 14 Octubre 2020, 17:32 pm por Daniel 🇦🇷 » En línea

jamatbar

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Duda tonta con ejercicio en PHP
« Respuesta #5 en: 14 Octubre 2020, 17:16 pm »

Puedes simplemente agregar a $resultado una vez si el carácter es una 'z'. Piensa que no es necesario hacer una revisión por cada carácter del abecedario porque para hacer el cambio de la 'z' a la 'a' ni siquiera estás usando ese diccionario.

De la misma manera, piensa acerca del " " que ahí tampoco estás usando el diccionario. No estás muy lejos de la solución.

Muchas gracias, he sacado ambos condicionales del buscador en el array y me funciona correctamente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda tonta en VB
Programación Visual Basic
Athagan 7 2,373 Último mensaje 31 Diciembre 2005, 23:55 pm
por Athagan
Duda tonta con el winsock
Programación Visual Basic
Meg 1 1,193 Último mensaje 18 Febrero 2006, 16:58 pm
por Meg
duda tonta con el picture
Programación Visual Basic
Meg 6 1,833 Último mensaje 7 Julio 2006, 22:59 pm
por Ironhorse
duda tonta...
Programación Visual Basic
hAcKeR92 3 2,024 Último mensaje 14 Marzo 2008, 01:01 am
por ((( SPAWN )))
Duda tonta sobre C
Programación C/C++
Oblivi0n 9 3,972 Último mensaje 5 Mayo 2010, 22:59 pm
por Littlehorse
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines