Ecuación cuadrática
Desarrolle un programa que resuelva la ecuación cuadrática ax2+bx+c=0.
La entrada del programa serán a, b y c. La salida serán las soluciones reales de la ecuación.
Por ejemplo, si la entrada son los valores 1, 2 y —8, la salida del programa debe ser:
-4.0
2.0
Si la entrada son los valores 4, 4 y 1, la salida del programa debe ser:
-0.5
Si la entrada son los valores 3, —3 y 1, la salida del programa debe ser:
no hay soluciones reales
Solución
Resolveremos la ecuación reemplazando a, b y c en la fórmula cuadrática:
x= (-b ± √(b2- 4ac) )/ 2a
El discriminante de la fórmula determina cuántas soluciones reales hay, es decir la cantidad de valores de x que satisfacen la ecuación. Si el discriminante es cero hay una solución, si es mayor a 0 hay dos soluciones y si es negativo no hay soluciones reales. El discriminante se calcula como Δ= b2 - 4ac
Cuando el discriminante es cero, la fórmula cuadrática que queda es x= -b/2a
Cuando el discriminante es mayor a cero nos quedan dos soluciones:
x= (-b + √Δ) / 2a
x= (-b - √Δ) / 2a
Solución en Javascript
function cuadratica(){
var a;
var b;
var c;
a= prompt( 'Ingresar el valor a: ', 1 );
// si a es cero o vacio no es una función cuadrática
if (! (a*1)) return;
b= prompt( 'Ingresar el valor b: ', 1 );
c= prompt( 'Ingresar el valor c: ', 1 );
var discriminante= b*b - 4*a*c;
if (discriminante < 0){
alert( 'No hay soluciones reales' );
return;
}
if (discriminante){
alert( 'Hay dos soluciones:' );
var solucion = (-b + Math.sqrt(discriminante))/(2*a);
alert( solucion );
var solucion2 = (-b - Math.sqrt(discriminante))/(2*a);
alert( solucion2 );
}else{
var solucion = -b/(2*a);
alert( 'La unica solucion es ' + solucion );
}
return;
}
cuadratica();
cuadratica();
cuadratica();
Solución en Perl
#!/usr/bin/perl
use strict;
use warnings;
print "Ingresar el valor a: ";
my $a = <stdin>;
chomp($a);
if (! $a){ die; }
print "Ingresar el valor b: ";
my $b = <stdin>;
chomp($b);
print "Ingresar el valor c: ";
my $c = <stdin>;
chomp($c);
my $discriminante= $b*$b - 4*$a*$c;
if ($discriminante < 0){
print "No hay soluciones reales \n";
exit;
}
if ($discriminante){
print "Hay dos soluciones: \n";
my $solucion = (-$b + sqrt($discriminante))/(2*$a);
print $solucion."\n";
my $solucion2 = (-$b - sqrt($discriminante))/(2*$a);
print $solucion2."\n";
}else{
my $solucion = -$b/(2*$a);
print "La unica solucion es $solucion \n";
}