Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: luchi en 17 Abril 2014, 01:26 am



Título: Dibujar letra 'T'
Publicado por: luchi en 17 Abril 2014, 01:26 am
Hola. Estoy teniendo problemas con éste ejercicio:
http://www.mclibre.org/consultar/php/examenes/13-14/letra_t.html
No consigo dar con ello para que me salga todo bien, unas veces la parte de arriba sale bien, pero el 'palito' no, tengo que usar el carácter '-' por que si pongo el espacio en blanco, los espacios me los imprime todos a la derecha y se deforma...en fin, aquí el código:
-El formulario
Código
  1. <html>
  2. <head>
  3. <title>Letra T(formulario)</title>
  4. </head>
  5. <body>
  6. <h1><center>Letra T(formulario)</center></h1>
  7. <form action="resultado.php" method="POST">
  8. <fieldset>
  9. <legend>Formulario</legend>
  10. <p>Indique el grosor del trazo de la letra(mayor que cero y menor que cinco) y su altura(menor que 20) y se mostrara una letra
  11. T hecha con estrellas de acuerdo con los valores indicados. Ademas ambos valores pueden ser pares o impares simultaneamente.</p>
  12. <b>Grosor:</b><input type="text" name="grosor" size=5>
  13. <b>Alto:</b><input type="text" name="alto" size=5><br>
  14. <input type="submit" value="Dibujar">
  15. <input type="reset" value="Borrar">
  16. </fieldset>
  17. </form>
  18. </body>
  19. </html>
  20.  


El resultado:
Código
  1. <html>
  2. <head>
  3. <title>Letra T (Resultado)</title>
  4. </head>
  5. <body>
  6. <?php
  7. $grosor=$_REQUEST['grosor'];
  8. $alto=$_REQUEST['alto'];
  9. if($grosor<0||$grosor>5||$grosor==""){
  10. echo "<p><font color='red'>No ha escrito el grosor</font></p>";
  11. }
  12.  
  13. if($alto<0||$alto>20||$alto==""){
  14. echo "<p><font color='red'>No ha escrito la altura como numero entero positivo</font></p>";
  15. return false;
  16. }
  17.  
  18. if(!($grosor%2==0 && $alto%2==0 || $grosor%2!=0 && $alto%2!=0)){
  19. echo "<p><font color='red'>Grososr y altura deben ser ambos pares o ambos impares</font></p>";
  20. return false;
  21. }
  22.  
  23. for($r=0 ;$r<$grosor; $r++){
  24. for($t=0; $t<$alto; $t++){
  25. echo "* ";
  26. }
  27. echo "<br>";
  28. }
  29. $resta=$grosor-1;
  30. $menos=$grosor+3;
  31. for($d=0; $d<$menos;$d++){
  32. for($i=0; $i<$resta; $i++){
  33. echo "- ";
  34. }
  35. for($l=0; $l<$grosor; $l++){
  36. echo "* ";
  37. }
  38. echo "<br>";
  39. }
  40.  
  41. ?>
  42. </body>
  43.  
  44. </html>
  45.  


Título: Re: Dibujar letra 'T'
Publicado por: novatop en 20 Abril 2014, 04:15 am
Creo que algo asi es lo que buscas. Fijate que para que te escriba los espacios debes usar su codigo html "&nbsp;" y no el caracter " ".
Saludos

Alfonso

Código
  1. <html>
  2. <head>
  3. <title>Letra T (Resultado)</title>
  4. </head>
  5. <body>
  6. <?php
  7. $grosor=5;
  8. $alto=13;
  9. if($grosor<0||$grosor>5||$grosor==""){
  10.  echo "<p><font color='red'>No ha escrito el grosor</font></p>";
  11. }
  12.  
  13. if($alto<0||$alto>20||$alto==""){
  14.  echo "<p><font color='red'>No ha escrito la altura como numero entero positivo</font></p>";
  15.  return false;
  16. }
  17.  
  18. if(!($grosor%2==0 && $alto%2==0 || $grosor%2!=0 && $alto%2!=0)){
  19.  echo "<p><font color='red'>Grososr y altura deben ser ambos pares o ambos impares</font></p>";
  20.  return false;
  21. }
  22. for ($h=0 ; $h<$grosor; $h++){
  23. for($i=0;$i<$alto;$i++){
  24.      echo "*";
  25. }  
  26. echo "<br>";
  27. }
  28. for ($h=0; $h<$alto-$grosor; $h++){  
  29.  for ($i=0;$i<(($alto -$grosor)/2);$i++){
  30.    echo "&nbsp;";
  31.  }
  32.  for ($i=0;$i<$grosor;$i++){
  33.    echo "*";
  34.  }
  35. echo "<br>";
  36. }
  37. ?>
  38. </body>
  39.  
  40. </html>


Título: Re: Dibujar letra 'T'
Publicado por: luchi en 20 Abril 2014, 22:14 pm
Si, ahora funciona  ;D, lo del '&nbsp' era lo importante, gracias, sobre todo por que hay otros ejercicios parecidos con los que tenía la misma problemática.