Zadání:
Sestavte program, který najde řešení kvadratické rovnice ax2+bx+c=0 v oboru reálných nebo komplexních čísel.
Řešení:
Po zadání koeficientů a, b a c otestujeme, zda nebyl zadán nulový koeficient a. Pokud ano, přechází řešení kvadratické
rovnice na řešení lineární rovnice. Při řešení lineární rovnice ještě otestujeme, zda nebyl zadán koeficient b nulový.
Pokud ano, musíme ještě otestovat koeficient c na nulovou hodnotu.
Pokud nebyl zadán koeficient a nulový, vypočteme hodnotu diskriminantu D = b2 - 4ac. Pokud je vypočtená hodnota D
menší než nula, má kvadratická rovnice řešení v oboru komplexních čísel, jinak lze vypočítat řešení v oboru reálných čísel.
a=0, b=0, c=0: rovnice má nekonečně mnoho řešení
a=0, b=0, c<>0: rovnice nemá řešení
a=0, b<>0: rovnice má jedno řešení
a<>0, D<0: rovnice má řešení v C
a<>0, D=0: rovnice má v R řešení jeden dvojnásobný kořen
a<>0, D>0: rovnice má v R dva kořeny
Module Module1
Sub Main()
Dim a, b, c, d, x1, x2 As Double
Console.Write("Zadejte koeficient a: ")
a = Console.ReadLine
Console.Write("Zadejte koeficient b: ")
b = Console.ReadLine
Console.Write("Zadejte koeficient c: ")
c = Console.ReadLine
If a = 0 Then
If b = 0 Then
If c = 0 Then
Console.WriteLine("Nekonecne mnoho reseni")
Else
Console.WriteLine("Rovnice nema reseni")
End If
Else
Console.WriteLine("Jedno reseni x={0:0.000}", -c / b)
End If
Else
d = b ^ 2 - 4 * a * c
If d < 0 Then
d = Math.Abs(d)
Console.WriteLine("x1={0:0.000}+i*{1:0.000}", -b/(2*a), Math.Sqrt(d)/(2*a))
Console.WriteLine("x2={0:0.000}-i*{1:0.000}", -b/(2*a), Math.Sqrt(d)/(2*a))
Else
x1 = (-b + Math.Sqrt(d)) / (2 * a)
x2 = (-b - Math.Sqrt(d)) / (2 * a)
Console.WriteLine("x1={0:0.000}", x1)
Console.WriteLine("x2={0:0.000}", x2)
End If
End If
Console.ReadLine()
End Sub
End Module
program ke stažení