Autor Tema: PHP contar el número de vocales o de consonantes en palabra o texto CU00828B  (Leído 10547 veces)

pedro,,

  • Moderador Global
  • Experto
  • *******
  • APR2.COM
  • Mensajes: 1292
    • Ver Perfil
Buenas, otra solución más (ejercicio CU00828B del curso de programación web con php):

Citar
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.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
<head>
<title>Ejercicio. CU00828B</title>
<meta charset="utf-8">
</head>
<body>
<h1>Apartado a</h1>
<?php
$texto 'El abecedario completo es algo largo y detallarlo exhaustivamente es costoso';
$vocales = ['a''e''i''o''u'];
$msg ' Numero de veces que se repiten las vocales en la cadena de texto:<br/>' $texto '<br/>';
for($i 0$i count($vocales); $i++) {
$msg $msg 'La letra ' $vocales[$i] . ' aparece ' substr_count($texto$vocales[$i]) . ' veces.<br/>';
}
echo ($msg);
?>

<hr>
<h1>Apartado b</h1>
<?php
$textoToLower strtolower($texto);
$arrayLetras count_chars($textoToLower1); 
$msg ' Numero de veces que se repiten las consonantes en la cadena de texto:<br/>' $texto '<br/>';
foreach($arrayLetras as $indiceNum => $veces) {
if($indiceNum<>32 && $indiceNum<>97 && $indiceNum<>101 && $indiceNum<>105 && $indiceNum<>111 && $indiceNum<>117){
$msg $msg 'La letra ' chr($indiceNum) . ' aparece ' $veces ' veces<br/>';
}
}
echo ($msg);
?>

<hr>
<h1>Apartado c</h1>
<?php
$msg 'Teniendo la cadena de texto:<br/>' $texto '<br/>Sustituiremos todas las "a" por el simbolo "*".<br/>';
$msg $msg str_replace('a''*'$texto);
echo ($msg);
?>

<hr>
<h1>Apartado d</h1>
<?php
$msg 'Teniendo la cadena de texto:<br/>' $texto '<br/>Mostramos la subcadena:<br/>';
$msg $msg ltrim(strstr($texto'completo'), 'completo');
echo ($msg);
?>

</body>
</html>

http://aprendehtml.byethost3.com/CU00828B/ejercicioCU00828B.php

Saludos.
« Última modificación: 14 de Septiembre 2017, 19:05 por Ogramar »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola Pedro

Nuevamente al intentar probar el código el mismo error que se ha comentado otras veces: Parse error: syntax error, unexpected '['

en la línea

$vocales = ['a', 'e', 'i', 'o', 'u'];

Esto solo salta en algunos servidores según la versión php y se corrige escribiéndolo como

$vocales = array('a', 'e', 'i', 'o', 'u');


El ejercicio está todo bien

El apartado b está muy bien resuelto, usando count_chars obtienes "un array con el valor numérico ascii como índice y la frecuencia de cada carácter ascii como valor."

Con el condicional if($indiceNum<>32 && $indiceNum<>97 && $indiceNum<>101 && $indiceNum<>105 && $indiceNum<>111 && $indiceNum<>117) eliminas del listado el espacio en blanco y las vocales

Y con el foreach foreach($arrayLetras as $indiceNum => $veces) resuelves perfectamente el ejercicio

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".