Другие языки программирования и технологии
Решение Квадратного уравнения в 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
Судя по этому фрагменту:
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
вот здесь http://www.uchportal.ru/load/29-1-0-2435 скомпиленый exe, и сама форма есть готовая, бери и разбирайся
Похожие вопросы
- Решение квадратного уравнения через паскаль.
- Програмисты, помогите! В Турбо Паскаль составить программу для решения квадратного уравнения(ax^2+bx=c)
- Помогите Написать программу (на Pascal) для решения квадратного уравнения.
- Программа для решения квадратного уравнения в Си
- Как будет выглядеть программа решения квадратного уравнения ax^2 + bx + c = 0 (Паскаль)???
- Дайте мне любое квадратное уравнение
- Помогите пожалуйста составить программу в Qbasic обычного квадратного уравнения...очень нужно...
- Нужна помощь! Необходимо создать программу на С++, которая решает квадратное уравнение. Выдает ошибку после }
- Квадратное уравнение в с++
- Напишите программу на языке программирования Паскаль, . которая вычисляет дискриминант квадратного уравнения