VB.net - Решение квадратных уравнений
Часто встречающаяся задача в математике школьного курса - решение квадратных уравнений. И в этой статье мы опишем создания программы для решения таких задач.
Если же вам нужна готовая версия, то ее вы сможете скачать ЗДЕСЬ.
На фому помещаем следующие элементы:
Текстовое поле для ответа делаем многострочным, также добавляем ярлыки для X, 2, x, =0.
Код программы:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'вводим переменные для знаков
Dim znakA, znakB, znakC
'определяем знак А
If cmdA.Text = "-" Then
znakA = -1
Else
znakA = 1
End If
'определяем знак B
If cmdB.Text = "-" Then
znakB = -1
Else
znakB = 1
End If
'определяем знак C
If cmdC.Text = "-" Then
znakC = -1
Else
znakC = 1
End If
Dim a As Integer = Val(txtA.Text) * znakA
Dim b As Integer = Val(txtB.Text) * znakB
Dim c As Integer = Val(txtC.Text) * znakC
Dim D As Integer
'Dim chars As Char = ChrW(&H221A) - корень квадратный
Dim koren As Char = ChrW(&H221A)
D = b ^ 2 - 4 * a * c
''уравнение
txtOtvet.Text = "a = " + Str(a) + vbCrLf + "b = " + Str(b) + vbCrLf + "c = " + Str(c) + vbCrLf
If a <> 0 Then
''дискр
txtOtvet.Text += vbCrLf + "D = b ^ 2 - 4 * a * c = " _
+ Str(b * b) + " - 4*(" + Str(a) + ")*(" + Str(c) + ") = " _
+ Str(b ^ 2 - 4 * a * c) + vbCrLf
If D >= 0 Then
txtOtvet.Text += vbCrLf + "X1 = ( -b - " + koren + "D )" + " / (2a)"
txtOtvet.Text += " = (" + Str(b * (-1)) + " - " + Str(D ^ (1 / 2)) + ") / " + (Str(2 * a))
txtOtvet.Text += " = " + Str(((-1) * b - (D ^ (1 / 2))) / (2 * a)) + vbCrLf
If D > 0 Then
txtOtvet.Text += vbCrLf + "X2 = ( -b + " + koren + "D )" + " / (2a)"
txtOtvet.Text += " = (" + Str(b * (-1)) + " + " + Str(D ^ (1 / 2)) + ") / " + (Str(2 * a))
txtOtvet.Text += " = " + Str(((-1) * b + (D ^ (1 / 2))) / (2 * a)) + vbCrLf
End If
Else
txtOtvet.Text += "D = " + Str(D) + " - меньше 0, " + vbCrLf + "решений нет!"
End If
Else
txtOtvet.Text += vbCrLf + "X = -c/b = " + Str((-1) * c) + "/" + Str(b) + " = " + Str(((-1) * c) / b)
End If
End Sub
'смена знака
Private Sub cmdA_Click(sender As Object, e As EventArgs) Handles cmdA.Click
If cmdA.Text = "-" Then
cmdA.Text = "+"
Else
cmdA.Text = "-"
End If
End Sub
'смена знака
Private Sub cmdB_Click(sender As Object, e As EventArgs) Handles cmdB.Click
If cmdB.Text = "-" Then
cmdB.Text = "+"
Else
cmdB.Text = "-"
End If
End Sub
'смена знака
Private Sub cmdC_Click(sender As Object, e As EventArgs) Handles cmdC.Click
If cmdC.Text = "-" Then
cmdC.Text = "+"
Else
cmdC.Text = "-"
End If
End Sub
'ввод только цифр и бекспейса
Private Sub txtA_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtA.KeyPress
If Not IsNumeric(e.KeyChar) AndAlso Asc(e.KeyChar) <> 8 Then e.Handled = True
End Sub
'ввод только цифр и бекспейса
Private Sub txtB_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtB.KeyPress
If Not IsNumeric(e.KeyChar) AndAlso Asc(e.KeyChar) <> 8 Then e.Handled = True
End Sub
'ввод только цифр и бекспейса
Private Sub txtC_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtC.KeyPress
If Not IsNumeric(e.KeyChar) AndAlso Asc(e.KeyChar) <> 8 Then e.Handled = True
End Sub
End Class
смотреть видео
Теперь решение квадратных уравнений для вас пустяковое дело!
END
|