Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Elanti en 12 de Septiembre 2015, 23:07
-
EJERCICIO
Crear archivos php que ejecuten la tarea indicada:
a) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", indicar cuántas veces aparece cada vocal usando funciones para cadenas PHP.
b) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", indicar qué consonantes son las que aparecen y cuántas veces aparecen usando funciones para cadenas PHP.
c) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", mostrar la cadena donde todas las a hayan sido sustituídas por el símbolo *. Por ejemplo en lugar de <<El abecedario…>> se habrá de mostrar <<El *beced*rio…>>
d) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso", mostrar la subcadena desde la primera aparición de <<completo>> excluyendo completo, es decir, deberá mostrarse << es algo largo y detallarlo exhaustivamente es costoso>>. Para ello usa una o varias funciones para cadenas PHP.
Logré resolver correctamente este ejercicio. Pero como siempre hay más de una forma de hacer las cosas, dejo mi código por si alguien tiene algún comentario o sugerencia de mejora:
<?php
$cad="El abecedario completo es algo largo y detallarlo exhaustivamente es costoso";
$cad = strtolower($cad);
$vocales = array("a","e","i","o","u");
echo "<strong>Parte a)</strong><br /><br />";
///////////////////////////PARTE A: ///////////////////////////////////////////////
foreach ($vocales as $vocal){
echo "La vocal '$vocal' aparece ", substr_count($cad,$vocal);
switch (substr_count($cad,$vocal)){
case 1:
echo " vez. <br />";
break;
default:
echo " veces. <br />";
}
}
echo "<br />";
echo "<strong>Parte b)</strong><br /><br />";
///////////////////////////PARTE B: //////////////////////////////////////////////////
foreach (count_chars($cad,1) as $letra=>$ocurrencias){
if (in_array(chr($letra),$vocales)){
continue;
}else if (chr($letra)==" "){
continue;
}else if ($ocurrencias==1){
echo "La consonante ","'", chr($letra),"'", " aparece ", $ocurrencias, " vez<br />";
}
else{
echo "La consonante ","'", chr($letra),"'", " aparece ", $ocurrencias, " veces<br />";
}
}
echo "<br />";
echo "<strong>Parte c)</strong><br /><br />";
////////////////////////// PARTE C: //////////////////////////////////////////////////////
echo str_replace("a","*",$cad);
echo "<br />";
echo "<br />";
echo "<strong>Parte d)</strong><br /><br />";
////////////////////////// PARTE D: //////////////////////////////////////////////////////
$concompleto = strstr($cad,"completo");
$sincompleto = substr($concompleto, strlen("completo"));
echo $sincompleto;
?>
-
Hola Elanti, visto y probado el código pienso que está bien resuelto. Has utilizado algunas funcionalidades o instrucciones que no se explican en el curso. Por ejemplo la función in_array para comprobar si un elemento existe dentro de un array, la función chr para obtener la letra asociada a un valor numérico asc ii, etc. Pero bueno, lo importante es que hayas logrado resolverlo por tí mismo y además lo has hecho bien.
Para mostrar "vez" o "veces" has usado un switch evaluando si una vocal aparece una vez o más de una vez. Normalmente si sólo hay una alternativa (en este caso 1 vez ó mas) se hace con un if ¿Por qué lo hiciste con un switch?
Saludos
-
Hola, Alex:
Gracias por tus comentarios. Efectivamente, estoy complementando lo que aprendo aquí con lo que aprendo en otros sitios, y tomo un poco de aquí y un poco de allá.
Lo de "switch" fue simplemente para probar algo diferente.
¡Saludos!