Autor
|
Tema: Duda tonta con ejercicio en PHP (Leído 3,365 veces)
|
jamatbar
Desconectado
Mensajes: 104
|
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: <?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
|
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
Mensajes: 104
|
¿Y alguna solucion a ese fallo?, probé con ir eliminando el caracter comprobado pero me daba continuamente errores
|
|
|
En línea
|
|
|
|
MinusFour
|
¿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
Mensajes: 1.841
🔵🔵🔵🔵🔵🔵🔵
|
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. $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.phpSaludos
|
|
« Última modificación: 14 Octubre 2020, 17:32 pm por Daniel 🇦🇷 »
|
En línea
|
|
|
|
jamatbar
Desconectado
Mensajes: 104
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Duda tonta en VB
Programación Visual Basic
|
Athagan
|
7
|
2,373
|
31 Diciembre 2005, 23:55 pm
por Athagan
|
|
|
Duda tonta con el winsock
Programación Visual Basic
|
Meg
|
1
|
1,193
|
18 Febrero 2006, 16:58 pm
por Meg
|
|
|
duda tonta con el picture
Programación Visual Basic
|
Meg
|
6
|
1,833
|
7 Julio 2006, 22:59 pm
por Ironhorse
|
|
|
duda tonta...
Programación Visual Basic
|
hAcKeR92
|
3
|
2,024
|
14 Marzo 2008, 01:01 am
por ((( SPAWN )))
|
|
|
Duda tonta sobre C
Programación C/C++
|
Oblivi0n
|
9
|
3,972
|
5 Mayo 2010, 22:59 pm
por Littlehorse
|
|