Javascript: resolver ecuación de 2º grado
Solución
<script>
function discrim(a, b, c)
{
return (b*b - 4*a*c);
}
function solucionar(a, b, c, sol)
{
var disc = discrim(a,b,c);
if (disc < 0)
alert("Sin solución real");
else
{
sol[0] = (-b + Math.sqrt(disc))/(2*a);
sol[1] = (-b - Math.sqrt(disc))/(2*a);
}
}
</script>
<body>
<p>La ecuación es </p>
<p>Ecuación x2 - 8·x + 12 = 0 </p>
<script>
var soluc = new Array(2);
solucionar(1,-8,12, soluc) ;
document.write( "Soluciones "+soluc[0]+" y "+soluc[1]);
</script>
</body>
Explicación
Primero recordemos que las soluciones venían dadas por la expresión:
x = ( -b ± sqrt(b2 - 4ac) )/2·a
Donde sqrt es raiz cuadrada.
Observa el uso de un objeto (el Array para las soluciones, soluc) para lograr que el último argumento de la función soluciones( ) sea pasado por referencia, es decir, para que los cambios que se hagan en él dentro de la función se mantengan al terminar ésta.
Por supuesto se podría haber creado un obejto para devolver ambas soluciones mediante return. Pero se trata de mostrar un paso de argumento por referencia