PROBLEMA: Realizar programa para la solucion de ecuaciones del tipo ax^2 + bx + c = 0 utilizando procedimientos y funciones.
SOLUCION: La ecuación completa de segundo grado tiene siempre dos soluciones, no necesariamente distintas, llamadas raíces, que pueden ser reales o complejas, el discriminante esta dado por la expresion b^2-4ac y mediante este discriminante podremos saber el número y naturaleza de las soluciones:
- Dos soluciones reales y diferentes si el discriminante es mayor a cero(la parábola cruza dos veces el eje x);
- Una solución real doble, dicho de otro modo, de multiplicidad dos, si el discriminante es igual a cero (la parábola sólo toca en un punto al eje x);
- Dos números complejos conjugados si el discriminante es negativo, menor a cero (la parábola y el eje x no se cruzan).
01 Module Module1 02 Dim aa, bb, cc, x1, x2, xaa, xbb, d As Double 03 Sub Main() 04 Do 05 Leer() 06 d = ecuacion_cuadratica() 07 Imprime(d) 08 Console.WriteLine("Para salir presione [s], para continuar presione ENTER") 09 Loop Until Console.ReadLine() = "s" 10 End Sub 11 12 'procedimiento para leer tres valores numericos y asignarlos a las variables globales 13 ' aa,bb,cc 14 Private Sub Leer() 15 Console.Write("Ingresa A = ") 16 aa = Val(Console.ReadLine) 17 Console.Write("Ingresa B = ") 18 bb = Val(Console.ReadLine) 19 Console.Write("Ingresa C = ") 20 cc = Val(Console.ReadLine) 21 End Sub 22 23 'funcion que calcula los valores para x1 y x2, tambien calcula el valor 24 'para el discriminante (d) que puede ser 0, > 0 ó < 0 y retorna este valor 25 Private Function ecuacion_cuadratica() As Double 26 d = (bb ^ 2) - (4 * aa * cc) 27 If d = 0 Then 28 x1 = bb / (2 * aa) 29 x2 = x1 30 End If 31 If d > 0 Then 32 x1 = (-bb + Math.Sqrt(d)) / (2 * aa) 33 x2 = (-bb - Math.Sqrt(d)) / (2 * aa) 34 End If 35 If d < 0 Then 36 x1 = -bb / (2 * aa) 37 x2 = x1 38 xaa = Math.Sqrt(-d) / (2 * aa) 39 xaa = xbb 40 End If 41 Return d 42 End Function 43 44 'procedimiento que dado el valor del discriminante, imprime los valores 45 'para las raices x1 y x2 46 Private Sub Imprime(ByVal dd As Double) 47 If dd = 0 Then 48 Console.WriteLine("Las soluciones son iguales X1=X2=" & x1) 49 End If 50 If dd > 0 Then 51 Console.WriteLine("Las soluciones no son iguales") 52 Console.WriteLine("X1 = " & x1) 53 Console.WriteLine("X2 = " & x2) 54 End If 55 If dd < 0 Then 56 Console.WriteLine("Las soluciones son imaginarias") 57 Console.WriteLine("X1 =" & x1 & " + " & xaa & " i") 58 Console.WriteLine("X2 =" & x2 & " + " & xbb & " i") 59 End If 60 End Sub 61 End Module
Prueba: Para datos de entrada
A = -2, B = 12, C = -16 resultado; x1=2, x2=4
A = -4, B = -12, C = -8 resultado: x1=-2 , x2=-1
A = -4, B = -8, C = -4 resultado: x1=-1 , x2=-1
1 comentarios:
No resuelve las imaginarias verdad
Publicar un comentario