2012-07-18 5 views
0

두 번째 학년 방정식 (예 : 2x² + 2x + 2)을 풀 수있는 프로그램을 만들고 있는데, 사용자가 전체 텍스트를 단일 텍스트 상자에 입력하려고했습니다. . 그런 다음 컴퓨터는 입력란에 입력 된 내용을 문자열로 저장 한 다음 문자열을 구문 분석하여 계수를 찾습니다. 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 

답변

1

당신은 당신이 당신의 어셈블리를 다시 작성하지 않고 설정과 정규식 표현을 변경할 수 있기 때문에 좋은 것 문자열을 구문 분석 할 정규식을 사용할 수 있습니다. 그러나 방정식 문자열 형식이 항상 동일 할 경우 여기에있는 것처럼 보입니다 (그렇지 않은 경우 나머지 코드가 실패하기 때문에 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)) 
관련 문제