[ Foro de PHP ]
Ejercicios de repaso (I): el número 4
bueno, el enunciado de éste es:
Pida al usuario dos números (usando un formulario) y muestre su suma, su resta, su multiplicación y su división.
No he tenido problema para armar el formulario, sería algo así:
He tenido más problema con la página php que lo procesa... porque en el caso de la división, no obtenía el número en el formato que quería: por ejemplo, la división de "5" entre "2" me daba como resultado "2", sin decimales. Había hecho esto:
";
printf("%d - %d es %d",
$numero1, $numero2, $numero1-$numero2); echo "
";
printf("%d por %d es %d",
$numero1, $numero2, $numero1*$numero2); echo "
";
printf("%d entre %d es %d",
$numero1, $numero2, $numero1/$numero2);
?>
Buscando por ahí encontré cómo obtener el formato con decimales; la sentencia de la división sería algo así:
printf("%d entre %d es %.1f",
$numero1, $numero2, $numero1/$numero2);
Con eso sí obtengo un decimal... ¿Hay alguna manera más sencilla o más eficaz de hacerlo, Nacho?
Creo que Nacho está consiguiendo que aprenda :OD
agfsh... ya se me ha "comido" todo el código... vuelvo a ponerlo;
El formulario sería así:
<body>
<form action="operador.php" method="get">
Introduzca el primer numero: <input name="n1"
type="text"> <br /> <br />
Introduzca el segundo numero: <input name="n2"
type="text"> <br /> <br />
<input value="Operar" type="submit">
</form>
</body>
Como decía, he tenido más problema con la página php que lo procesa... porque en el caso de la división, no obtenía el número en el formato que quería: por ejemplo, la división de "5" entre "2" me daba como resultado "2", sin decimales. Había hecho esto:
<?php
$numero1 = $_GET['n1'];
$numero2 = $_GET['n2'];
printf("%d + %d es %d",
$numero1, $numero2, $numero1+$numero2); echo "<br />";
printf("%d - %d es %d",
$numero1, $numero2, $numero1-$numero2); echo "<br />";
printf("%d por %d es %d",
$numero1, $numero2, $numero1*$numero2); echo "<br />";
printf("%d entre %d es %.d",
$numero1, $numero2, $numero1/$numero2);
?>
Buscando por ahí encontré cómo obtener el formato con decimales; la sentencia de la división sería algo así:
printf("%d entre %d es %.1f", $numero1, $numero2,
$numero1/$numero2);
Con eso sí obtengo un decimal... ¿Hay alguna manera más sencilla o más eficaz de hacerlo, Nacho?
Creo que Nacho está consiguiendo que aprenda :OD
¿Alguno sabéis si es posible cambiar mi configuración personal en este foro para que mis mensajes no sean en formato html o alguna manera sencilla de que este formulario no "interprete" los mayorque y menorque como inicio y fin de etiqueta????
Muchas gracias de antemano :O)
Iulius
Lo del formato parece depender de la suerte ;-) Me explico: desde casa y desde algún ordenador del trabajo me aparece correctamente el editor HTML, con lo que puedo copiar y pegar HTML o PHP sin problemas; en cambio, desde mi aula no aparece el editor HTML, sino un editor de texto básico, en el que veo todo en HTML directamente, y me toca escribir las etiquetas a mano. Comprueba tu configuración de usuario, pero me temo que a ti te está ocurriendo lo mismo. Quizá sea problema del navegador de tu ordenador o de cómo se comunica con el foro; es algo que todavía no he podido investigar lo suficiente; si descubro el motivo, te lo digo.
Y lo que planteabas antes sobre los decimales, la alternativa que estás usando es razonable: si usas la orden "printf" para formatear la salida al estilo C, "%f" indica que el número debe aparecer con decimales, y antes puedes indicar cuantos decimales con cosas como "%.2f"
Por cierto... ¿has probado bien tu programa? ¿Que ocurre si el segundo número que introduce el usuario es 0...? ;-)
juas, vaya fallo de imprevisión... si el segundo número es 0 php canta un error, lógicamente... Ahora mismo, para salvar los papeles sólo se me ocurre algo así:
<?php
$numero1 = $_GET['n1'];
$numero2 = $_GET['n2'];
printf("%d + %d es %d",
$numero1, $numero2, $numero1+$numero2); echo "<br />";
printf("%d - %d es %d",
$numero1, $numero2, $numero1-$numero2); echo "<br />";
printf("%d por %d es %d",
$numero1, $numero2, $numero1*$numero2); echo "<br />";
if ($numero2 == 0){
echo "No es posible dividir entre cero<br />";
}
else {
printf("%d entre %d es %.1f",
$numero1, $numero2, $numero1/$numero2);
}
?>
Funciona, pero igual hay una manera mejor de hacerlo...
Otra cosa: la verdad es que no entiendo muy bien la diferencia entre usar "printf" y usar "echo", porque veo que podría haber mostrado el resultado igualmente con algo tipo:
echo "$numero1+$numero2";
¿Cuál es la diferencia si la hay????
Gracias1000,
Iulius
(No se puede continuar esta discusión
porque tiene más de dos meses de antigüedad.
Si tienes dudas parecidas, abre un nuevo hilo.)