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: Pepote21 en 11 de Agosto 2017, 15:37

Título: PHP Comparar cadenas y añadir caracteres a la izquierda o derecha CU00829B
Publicado por: Pepote21 en 11 de Agosto 2017, 15:37
Hola a todos. Os dejo mi código para el ejercicio CU00829B del curso básico de desarrollo web con PHP.

Gracias a todos. Un saludo.

Código: [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Ejercicio tema CU00829B aprenderaprogramar.com</title>
        <meta charset="utf-8">
       
    </head>
    <body>
   
    <?php
    echo '<h4>Ejercicio a)<h4/>';
    $cadena1='aprender';
$cadena2='aprende';
echo 'La cadena 1 es '.$cadena1.'<br/>';
echo 'La cadena 2 es '.$cadena2.'<br/>';
echo '<p>'.str_pad($cadena1, (strlen($cadena1)+10) , "*"STR_PAD_BOTH).'</p>';
    echo '<p>'.str_pad($cadena2, (strlen($cadena2)+10) , "*"STR_PAD_BOTH).'</p>';
echo '<hr>';
echo '<h4>Ejercicio b)<h4/>';
echo 'Comparación de los tres primeros caracteres de las dos cadenas<br/>';
if (strncmp($cadena1$cadena2,3) == 0) {
        echo 'Según strncmp las dos cadenas son iguales';
        }else {
        echo 'Según strncmp las dos cadenas NO son iguales'
        }
echo '<hr>';
echo '<h4>Ejercicio c)<h4/>';
$cadena3='ApRendEr A proGraMar.cOm';
echo 'La cadena 3 es '.$cadena3.'<br/>';
$cad3min=strtolower($cadena3);//A minúsculas
$cad3size=strlen($cad3min);//Tamaño de la cadena
if($cad3size%2==0){
echo str_pad($cad3min,$cad3size+$cad3size/2,'*',STR_PAD_BOTH).'<br/>';
}else{
echo str_pad($cad3min,$cad3size+($cad3size+1)/2,'*',STR_PAD_BOTH).'<br/>'
}
echo '<hr>';
?>

   
   
       
    </body>
</html>
Título: Re:PHP Comparar cadenas y añadir caracteres a la izquierda o derecha CU00829B
Publicado por: Ogramar en 14 de Septiembre 2017, 19:42
Buenas, los apartados a) y b) están correctos

En el apartado c) habría alguna cuestión a comentar

Supongamos que la cadena tiene longitud 3 (impar)

Al ejecutar $cad3min,$cad3size+($cad3size+1)/2 tendríamos 3+4/2 = 3+2 = 5 asteriscos que se reparten 2 a un lado y 3 a otro.

Para rellenar con 3 y 3 asteriscos podríamos usar

echo str_pad($cad3min,$cad3size+1+($cad3size+1)/2,'*',STR_PAD_BOTH).'<br/>';

Con esto realmente a cada lado de la cadena se muestra la mitad de la mitad de los asteriscos.

Para mostrar a cada lado la mitad de los asteriscos (la mitad de la longitud de la palabra) podríamos usar este código:

Código: [Seleccionar]
<!DOCTYPE html>
<html>
    <head>
        <title>Ejercicio tema CU00829B aprenderaprogramar.com</title>
        <meta charset="utf-8">
       
    </head>
    <body>
   
    <?php
    echo '<h4>Ejercicio a)<h4/>';
    $cadena1='aprender';
$cadena2='aprende';
echo 'La cadena 1 es '.$cadena1.'<br/>';
echo 'La cadena 2 es '.$cadena2.'<br/>';
echo '<p>'.str_pad($cadena1, (strlen($cadena1)+10) , "*"STR_PAD_BOTH).'</p>';
    echo '<p>'.str_pad($cadena2, (strlen($cadena2)+10) , "*"STR_PAD_BOTH).'</p>';
echo '<hr>';
echo '<h4>Ejercicio b)<h4/>';
echo 'Comparación de los tres primeros caracteres de las dos cadenas<br/>';
if (strncmp($cadena1$cadena2,3) == 0) {
        echo 'Según strncmp las dos cadenas son iguales';
        }else {
        echo 'Según strncmp las dos cadenas NO son iguales'
        }
echo '<hr>';
echo '<h4>Ejercicio c)<h4/>';
$cadena3='ApRendEr A proGraMar.cOma';
echo 'La cadena 3 es '.$cadena3.'<br/>';
$cad3min=strtolower($cadena3);//A minúsculas
$cad3size=strlen($cad3min);//Tamaño de la cadena
echo 'La cadena 3 tiene longitud '.$cad3size.'<br/>';
if($cad3size%2==0){
echo str_pad($cad3min,2*$cad3size,'*',STR_PAD_BOTH).'<br/>';
}else{
echo str_pad($cad3min,2*$cad3size+1,'*',STR_PAD_BOTH).'<br/>'
}
echo '<hr>';
?>

   
    </body>
</html>

Salu2