Navigace: Hlavní stránka -> BASIC -> 03 Podmínky -> 03.07 Kvadratická rovnice - řešení v C

MENU

03.07 Kvadratická rovnice - řešení v C

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í