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: paramonso en 14 de Julio 2017, 17:57

Título: PHP Funciones para cadenas, str_replace, count_chars contar vocales CU00828B
Publicado por: paramonso en 14 de Julio 2017, 17:57
Hola. Hago la entrega del Ejercicio CU00828B del tutorial de programación web con PHP desde cero.

Me ha costado un poco mas por que no me encontraba la forma de crear un algoritmo correcto con pocas lineas de código en el apartado b) segundo bloque de código.

No funcionaba yo con los if y las comparaciones hasta que he dado con él. Ahí va.

Enlace a la página: http://paramonso.byethost7.com/Ejercicio28(CU00828B)%20.php (http://paramonso.byethost7.com/Ejercicio28(CU00828B)%20.php)

Cabecera de la Pagina:
Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>PHP Desde cero aprenderaprogramar.com</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 1.27" />
<style type="text/css">
      body{  background-color:yellow; color:blue;}
      h1, h2{text-align:center; color:blue;}
      div{
  text-align:left;
  }
      #cont{

background-color:orange;
height:1500px;
width:950px;
padding:10px;
margin:20px auto;
}
#pres{
border:solid 2px;
background-color:White;
width:200px;
padding:5px;
margin:10px;
float:left;
}

.pres1{
height:150px;

}

.pres2{
height:300px;

}

#con {
   height:0;px
   width:0px;
               overflow: hidden;
               margin:0;
               padding:0;
               
}
#NoFLot{
clear:both;

}

</style>
</head>

<body>


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.

Código: [Seleccionar]
echo '<div id=cont>';
echo '<h1>Ejercicio Entrega 28 (CU00828B) </h1> <h2>Funciones de cadenas PHP</h2>
<h3>EJERCICIO <br/>
Crear archivos php que ejecuten la tarea indicada:<br/>
a) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",<br/>
 indicar cuántas veces aparece cada vocal usando funciones para cadenas PHP.</h3>';
 
echo '<div class=pres1 id=pres>';
$Cadena='El abecedario completo es algo largo y detallarlo exhaustivamente es costoso';
print '<strong><br/>Funcion substr_count<br/></strong>';
for($i=65; $i<=118; $i++)
{
if ($i==97 or $i==101 or $i==105 or $i==111 or $i==117 or $i==69)
{
$vocal=chr($i);
echo "La vocal $vocal aparece&nbsp;".substr_count($Cadena, $vocal)."&nbsp;Veces<br/>";
}
}
echo '</div>';
 
 echo'<div id=con></div>';
 
echo '<div class=pres1 id=pres>';
print '<strong><br/>Funcion count_chars ()<br/></strong>';
$n=1;
$miArray = count_chars ( $Cadena, $n);
foreach ($miArray as $indiceNum => $veces)
{
if (chr($indiceNum)=="a"
or chr($indiceNum)=="e"
or chr($indiceNum)=="i"
or chr($indiceNum)=="o"
or chr($indiceNum)=="u"
or chr($indiceNum)=="E")

{
echo 'Letra: '.chr($indiceNum).' , encontrada '.  $veces.' veces<br/>';
}
}
echo '</div>';
echo'<div id=con></div>';
echo '<div class=pres1 id=pres>';

$a="";$e="";$i="";$o="";$u="";$E=""; // Vaciar variables por si se han utilizado en otro lugar del programa

print '<strong><br/>Funcion substr()<br/></strong>';
for ($j=0; $j<=strlen($Cadena);$j++)
{
$Vocal=substr($Cadena,$j,1);
if ($Vocal=="a"){$a++; }
if ($Vocal=="e"){$e++; }
if ($Vocal=="i"){$i++; }
if ($Vocal=="o"){$o++;}
if ($Vocal=="u"){$u++; }
if ($Vocal=="E"){$E++; }
}
echo 'Letra: a encontrada '.  $a.' veces<br/>';
echo 'Letra: e encontrada '.  $e.' veces<br/>';
echo 'Letra: E encontrada '.  $E.' veces<br/>';
echo 'Letra: i encontrada '.  $i.' veces<br/>';
echo 'Letra: o encontrada '.  $o.' veces<br/>';
echo 'Letra: u encontrada '.  $u.' veces<br/>';

echo '</div>';


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ódigo: [Seleccionar]
echo '<div class=pres2 id=pres>';
$vocales=array("a","e","i","o","u","A","E","I","O","U");
        $n=1;
$miArray = count_chars ( $Cadena, $n);
foreach ($miArray as $indiceNum => $veces)
{

if (chr($indiceNum)<>"a"
and chr($indiceNum)<>"e"
and chr($indiceNum)<>"i"
and chr($indiceNum)<>"o"
and chr($indiceNum)<>"u"
and chr($indiceNum)<>"E"
and chr($indiceNum)<>chr(32))

{
echo 'Letra: '.chr($indiceNum).' , encontrada '.  $veces.' veces.<br/>';
}
}
echo '</div>';

echo'<div id=con></div>';
echo '<div class=pres2 id=pres>';
$Cadena='El abecedario completo es algo largo y detallarlo exhaustivamente es costoso';
$vocales=array("a","e","i","o","u","A","E","I","O","U");
    $n=1;
$ArrayCadena= count_chars ( $Cadena, $n);


foreach ($ArrayCadena as $Letra => $nveces)
{
 $Vocal=chr($Letra);
 for ($i=0; $i<=9;$i++)
 {
  $Esp=chr($Letra)==chr(32);
  $j=$vocales[$i]==chr($Letra);
  if ($Esp==1){$i=10;}
  if ($j==1){$i=10;}
 }
 if ($j<>1 and $Esp<>1) { echo 'Letra: '.chr($Letra).' , encontrada '.  $nveces.' veces.<br/>';$j=0;}
 
}
echo '</div>';


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…

El *beced*rio completo es *lgo l*rgo y det*ll*rlo exh*ustiv*mente es costoso


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.

es algo largo y detallarlo exhaustivamente es costoso

Código: [Seleccionar]
print '<h3 id=NoFLot>
  d) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",<br/>
  mostrar la subcadena desde la primera aparición de < < completo >> excluyendo completo, es decir, deberá<br/>
  mostrarse << es algo largo y detallarlo exhaustivamente es costoso>>. Para ello usa una o varias <br/>
  funciones para cadenas PHP.</h3>';

  print strstr ($Cadena,"es",false );
 echo '<br/><br/>';
echo '</div>';



?>

</body>

</html>



Espero que esté todo bien.
Gracias. ;)
Título: Re:PHP Ejercicio Entrega 28 (CU00828B)
Publicado por: pedro,, en 22 de Julio 2017, 12:59
Hola paramonso.

Deberías repasar el código que pegaste, con tanto copia y pega te has debido dejar algo de código sin pegar, porque el resultado que se obtiene no tiene nada que ver con el que podemos ver en el enlace que dejaste.

Como te dije en otra ocasión es preferible que pongas todo el código junto, y si prefieres separarlo, que cada pedazo de código que coloques tenga su inicio y final bien detallado para quién corrija no tenga que ir añadiendo todas las etiquetas que puedan faltar.

Saludos. ;D

Título: Re:PHP Ejercicio Entrega 28 (CU00828B)
Publicado por: paramonso en 22 de Julio 2017, 13:41
Ok.
 :-\
Perdon se me paso la etiqueta <?php.

En los ejercicios siguientes ya voy pegando todo el código.

Vuelvo a dejar el codigo entero.
Código: [Seleccionar]


 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
<title>PHP Desde cero aprenderaprogramar.com</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="Geany 1.27" />
<style type="text/css">
      body{  background-color:yellow; color:blue;}
      h1, h2{text-align:center; color:blue;}
      div{
  text-align:left;
  }
      #cont{

background-color:orange;
height:1500px;
width:950px;
padding:10px;
margin:20px auto;
}
#pres{
border:solid 2px;
background-color:White;
width:200px;
padding:5px;
margin:10px;
float:left;
}

.pres1{
height:150px;

}

.pres2{
height:300px;

}

#con {
   height:0;px
   width:0px;
               overflow: hidden;
               margin:0;
               padding:0;
               
}
#NoFLot{
clear:both;

}

</style>
</head>
</head>

<body>

 
<?php

echo '<div id=cont>';
echo 
'<h1>Ejercicio Entrega 28 (CU00828B) </h1> <h2>Funciones de cadenas PHP</h2> 
<h3>EJERCICIO <br/>
Crear archivos php que ejecuten la tarea indicada:<br/>
a) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",<br/>
 indicar cuántas veces aparece cada vocal usando funciones para cadenas PHP.</h3>'
;
 
echo 
'<div class=pres1 id=pres>';
$Cadena='El abecedario completo es algo largo y detallarlo exhaustivamente es costoso';
print '<strong><br/>Funcion substr_count<br/></strong>';
for($i=65$i<=118$i++)
{
if ($i==97 or $i==101 or $i==105 or $i==111 or $i==117 or $i==69)
{
$vocal=chr($i);
echo "La vocal $vocal aparece&nbsp;".substr_count($Cadena$vocal)."&nbsp;Veces<br/>";
}
}
echo '</div>';
 
 echo
'<div id=con></div>';
 
echo '<div class=pres1 id=pres>';
print '<strong><br/>Funcion count_chars ()<br/></strong>';
$n=1;
$miArray count_chars $Cadena$n);
foreach ($miArray as $indiceNum => $veces)
 {
if (chr($indiceNum)=="a" 
or chr($indiceNum)=="e" 
or chr($indiceNum)=="i" 
or chr($indiceNum)=="o" 
or chr($indiceNum)=="u"
or chr($indiceNum)=="E")

{
echo 'Letra: '.chr($indiceNum).' , encontrada '.  $veces.' veces<br/>';
}
}
echo '</div>';


echo'<div id=con></div>';
echo 
'<div class=pres1 id=pres>';

$a="";$e="";$i="";$o="";$u="";$E=""// Vaciar variables por si se han utilizado en otro lugar del programa

print '<strong><br/>Funcion substr()<br/></strong>';
for (
$j=0$j<=strlen($Cadena);$j++)
{
$Vocal=substr($Cadena,$j,1);
if ($Vocal=="a"){$a++; }
if ($Vocal=="e"){$e++; }
if ($Vocal=="i"){$i++; }
if ($Vocal=="o"){$o++;}
if ($Vocal=="u"){$u++; }
if ($Vocal=="E"){$E++; }
}
echo 
'Letra: a encontrada '.  $a.' veces<br/>';
echo 
'Letra: e encontrada '.  $e.' veces<br/>';
echo 
'Letra: E encontrada '.  $E.' veces<br/>';
echo 
'Letra: i encontrada '.  $i.' veces<br/>';
echo 
'Letra: o encontrada '.  $o.' veces<br/>';
echo 
'Letra: u encontrada '.  $u.' veces<br/>';

echo 
'</div>';
 echo
'<div id=con></div>';
 
 print 
'<h3 id=NoFLot><br/> b) Dada la cadena "El abecedario completo es algo largo y detallarlo<br/>
exhaustivamente es costoso", indicar qué consonantes son las que aparecen y<br/>
cuántas veces aparecen usando funciones para cadenas PHP.<br/></h3>'
;
 
echo 
'<div class=pres2 id=pres>';
$vocales=array("a","e","i","o","u","A","E","I","O","U");
        
$n=1;
$miArray count_chars $Cadena$n);
foreach (
$miArray as $indiceNum => $veces
{
 
if (chr($indiceNum)<>"a" 
and chr($indiceNum)<>"e" 
and chr($indiceNum)<>"i" 
and chr($indiceNum)<>"o" 
and chr($indiceNum)<>"u"
and chr($indiceNum)<>"E"
and chr($indiceNum)<>chr(32))

{
echo 'Letra: '.chr($indiceNum).' , encontrada '.  $veces.' veces.<br/>';
}
}
echo 
'</div>';

echo
'<div id=con></div>';
echo 
'<div class=pres2 id=pres>';
$Cadena='El abecedario completo es algo largo y detallarlo exhaustivamente es costoso';
$vocales=array("a","e","i","o","u","A","E","I","O","U");
    $n=1;
$ArrayCadenacount_chars $Cadena$n);


foreach (
$ArrayCadena as $Letra => $nveces
{
 
$Vocal=chr($Letra);
 for (
$i=0$i<=9;$i++)
 {
  $Esp=chr($Letra)==chr(32);
  $j=$vocales[$i]==chr($Letra);
  if ($Esp==1){$i=10;}
  if ($j==1){$i=10;}
 }
 if (
$j<>and $Esp<>1) { echo 'Letra: '.chr($Letra).' , encontrada '.  $nveces.' veces.<br/>';$j=0;}
 
}
echo 
'</div>';

  print 
'<h3 id=NoFLot>
  c) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",<br/>
  mostrar la cadena donde todas las a hayan sido sustituídas por el símbolo *. Por ejemplo en lugar de 
  <br/> El abecedario… se habrá de mostrar El *beced*rio…</h3>'
;
  print  
str_replace("a""*"$Cadena$reemplazos );
  
  print 
'<h3 id=NoFLot>
  d) Dada la cadena "El abecedario completo es algo largo y detallarlo exhaustivamente es costoso",<br/> 
  mostrar la subcadena desde la primera aparición de < < completo >> excluyendo completo, es decir, deberá<br/>
  mostrarse << es algo largo y detallarlo exhaustivamente es costoso>>. Para ello usa una o varias <br/>
  funciones para cadenas PHP.</h3>'
;

  print 
strstr ($Cadena,"es",false );
 echo 
'<br/><br/>';
echo 
'</div>';



?>


</body>

</html>

Gracias.
Título: Re:PHP Ejercicio Entrega 28 (CU00828B)
Publicado por: pedro,, en 22 de Julio 2017, 17:01
El ejercicio está bien resuelto.

Además has aportado soluciones distintas para resolver los dos primeros apartados, lo cuál está muy bien porque se puede sacar la conclusión de lo que nos puede interesar más para ahorrarnos código.

Saludos. ;D