Dibujar letra 'T'

Iniciado por luchi, 17 Abril 2014, 01:26 AM

0 Miembros y 1 Visitante están viendo este tema.

luchi

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 (php) [Seleccionar]

<html>
<head>
<title>Letra T(formulario)</title>
</head>
<body>
<h1><center>Letra T(formulario)</center></h1>
<form action="resultado.php" method="POST">
<fieldset>
<legend>Formulario</legend>
<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
T hecha con estrellas de acuerdo con los valores indicados. Ademas ambos valores pueden ser pares o impares simultaneamente.</p>
<b>Grosor:</b><input type="text" name="grosor" size=5>
<b>Alto:</b><input type="text" name="alto" size=5><br>
<input type="submit" value="Dibujar">
<input type="reset" value="Borrar">
</fieldset>
</form>
</body>
</html>


El resultado:
Código (php) [Seleccionar]

<html>
<head>
<title>Letra T (Resultado)</title>
</head>
<body>
<?php
$grosor
=$_REQUEST['grosor'];
$alto=$_REQUEST['alto'];
if(
$grosor<0||$grosor>5||$grosor==""){
echo "<p><font color='red'>No ha escrito el grosor</font></p>";
}

if(
$alto<0||$alto>20||$alto==""){
echo "<p><font color='red'>No ha escrito la altura como numero entero positivo</font></p>";
return false;
}

if(!(
$grosor%2==&& $alto%2==|| $grosor%2!=&& $alto%2!=0)){
echo "<p><font color='red'>Grososr y altura deben ser ambos pares o ambos impares</font></p>";
return false;
}

for($r=;$r<$grosor$r++){
for($t=0$t<$alto$t++){
echo "* ";
}
echo "<br>";
}
$resta=$grosor-1;
$menos=$grosor+3;
for(
$d=0$d<$menos;$d++){
for($i=0$i<$resta$i++){
echo "- ";
}
for($l=0$l<$grosor$l++){
echo "* ";
}
echo "<br>";
}

?>

</body>

</html>

novatop

#1
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 (php) [Seleccionar]
<html>
<head>
<title>Letra T (Resultado)</title>
</head>
<body>
<?php
$grosor
=5;
$alto=13;
if(
$grosor<0||$grosor>5||$grosor==""){
  echo 
"<p><font color='red'>No ha escrito el grosor</font></p>";
}
 
if(
$alto<0||$alto>20||$alto==""){
  echo 
"<p><font color='red'>No ha escrito la altura como numero entero positivo</font></p>";
  return 
false;
}
 
if(!(
$grosor%2==&& $alto%2==|| $grosor%2!=&& $alto%2!=0)){
  echo 
"<p><font color='red'>Grososr y altura deben ser ambos pares o ambos impares</font></p>";
  return 
false;
}
for (
$h=$h<$grosor$h++){
for($i=0;$i<$alto;$i++){
      echo 
"*";
}  
echo 
"<br>";

for (
$h=0$h<$alto-$grosor$h++){   
  for (
$i=0;$i<(($alto -$grosor)/2);$i++){
    echo 
"&nbsp;";
  }
  for (
$i=0;$i<$grosor;$i++){
    echo 
"*";
  }
echo 
"<br>";

?>

</body>

</html>

luchi

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.