0

私は 2 年生の方程式 (2x²+2x+2 など) を解くプログラムを作成しており、ユーザーに方程式全体を 1 つのテキスト ボックスに入力させようとしていました。次に、コンピューターはテキスト ボックスに入力された内容を文字列に格納し、文字列を解析して係数を見つけます。2x²+2x+2 のような方程式の場合、係数は 2、2、および 2 であり、文字列の位置 0、4、および 7 に格納されます。大きな問題は、32x²+32x+45 のようなより大きな方程式の場合はどうなるかということです。または 123x²+45x+6? その場合、私の論理は機能しません。誰もそれを行う方法を知っていますか?

小さな方程式でのみ機能する私のコードは次のとおりです。

Public Class Form1
    Dim i1 As Double
    Dim i2 As Double
    Dim i3 As Double
    Dim delta As Double
    Dim x1 As Double
    Dim x2 As Double
    Dim leters As String

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        i1 = T1.Text
        i2 = T2.Text
        i3 = T3.Text
        delta = (i2 * i2) - 4 * (i1 * i3)
        If (delta < 0) Then
            Ld.Text = delta
            L1.Text = "Impossível"
            L2.Text = "Impossível"
        Else
            x1 = (-i2 + Math.Sqrt(delta)) / (2 * i1)
            x2 = (-i2 - Math.Sqrt(delta)) / (2 * i1)
            Ld.Text = delta
            L1.Text = x1
            L2.Text = x2
        End If
    End Sub

    Private Sub RadioButton1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton1.CheckedChanged
        GroupBox1.Text = "Equação"
        GroupBox1.Width = 200
        GroupBox1.Height = 58
        T1.Width = 188
        T3.Hide()
        T2.Hide()
        Label1.Hide()
        Button1.Hide()
        Button2.Show()
    End Sub

    Private Sub RadioButton2_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles RadioButton2.CheckedChanged
        GroupBox1.Text = "Coeficientes"
        GroupBox1.Width = 200
        GroupBox1.Height = 143
        T1.Width = 119
        T3.Show()
        T2.Show()
        Label1.Show()
        Button1.Show()
        Button2.Hide()
    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
        leters = T1.Text
        leters.ToString()
    End Sub    
End Class
4

1 に答える 1

1

RegEx を使用して文字列を解析できます。これは、アセンブリを再構築せずに設定として RegEx 式を変更できるので便利です。ただし、ここでのように、方程式の文字列形式が常に同じである場合 (そうでない場合、コードの残りの部分が失敗するため)、単純に を使用String.Splitして文字列を解析できます。例えば:

Dim equation As String = "32x²+32x+45"
Dim parts() As String = equation.Split(New Char() {"+"c, "x"c}, StringSplitOptions.RemoveEmptyEntries)
Dim coefficient1 As Integer = Integer.Parse(parts(0))
Dim coefficient2 As Integer = Integer.Parse(parts(2))
Dim coefficient3 As Integer = Integer.Parse(parts(3))
于 2012-07-18T14:35:33.787 に答える