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