Другие языки программирования и технологии

Решение Квадратного уравнения в VB

Помогите довести до ума код, выдает всегнда "Нет корней" Private a, b, c, x1, x2, d As Single Private Sub Command1_Click() a = Val(Text1.Text) b = Val(Text1.Text) c = Val(Text1.Text) d = b ^ b - 4 * a * c If d > 0 Then x1 = (b + Sqr(d)) / (2 * a) x2 = (b - Sqr(d)) / (2 * a) Label5.Caption = Str(x1) Label6.Caption = Str(x2) Label4.Caption = " " ElseIf d = 0 Then x1 = x2 = b / (2 * a) Label5.Caption = Str(x1) Label4.Caption = " " Label6.Caption = " " Else Label4.Caption = "корней нет" End If End Sub
А в квадратном уравнении все коэффициенты равны что ли?
Судя по этому фрагменту:
a = Val(Text1.Text)
b = Val(Text1.Text)
c = Val(Text1.Text)
равны. Поэтому конечно либо корней нет, либо Overflow. Правда в некоторых случаях корни все же находятся, например, если внести в текстовое поле числа 4, 6, 7, 8,...и т. д. до 26 примерно. Это от того, что d неправильно находится: "d = b ^ b - 4 * a * c ", а должно быть d = b ^ 2 - 4 * a * c. И если бы d считалось правильно, то он бы всегда был отрицательным равным -3*b^2, т. е. конрней нет.
Коэффициенты нужно разные задавать и d правильно считать. Вот правильный код:
Private a, b, c, x1, x2, d As Single
Private Sub Command1_Click()
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = b ^ 2 - 4 * a * c
If d > 0 Then
x1 = (b + Sqr(d)) / (2 * a)
x2 = (b - Sqr(d)) / (2 * a)
Label5.Caption = Str(x1)
Label6.Caption = Str(x2)
Label4.Caption = " "
ElseIf d = 0 Then
x1 = x2 = b / (2 * a)
Label5.Caption = Str(x1)
Label4.Caption = " "
Label6.Caption = " "
Else
Label4.Caption = "корней нет"
End If
End Sub
Леха Мясников
Леха Мясников
6 640
Лучший ответ
вот здесь http://www.uchportal.ru/load/29-1-0-2435 скомпиленый exe, и сама форма есть готовая, бери и разбирайся