论坛的技术文档那里就有一个阿

解决方案 »

  1.   

    大部分都能正确算出来,TextBox有四个,分别输入四个要计算的数字:Option ExplicitConst PRECISION = 0.000001
    Const COUNT_OF_NUMBER = 4
    Const NUMBER_TO_BE_CAL = 24
    Dim number(COUNT_OF_NUMBER) As Double
    Dim expression(COUNT_OF_NUMBER) As StringFunction Search(n As Integer) As Boolean
        If n = 1 Then
            If Abs(number(0) - NUMBER_TO_BE_CAL) < PRECISION Then
                Label1.Caption = expression(0)
                Search = True
                Exit Function
            Else
                Search = False
                Exit Function
            End If
        End If
        
        Dim i As Integer, j As Integer
        For i = 0 To n - 1
            For j = i + 1 To n - 1
                Dim a As Double, b As Double
                Dim expa As String, expb As String
                
                a = number(i)
                b = number(j)
                number(j) = number(n - 1)
                
                expa = expression(i)
                expb = expression(j)
                expression(j) = expression(n - 1)
                
                expression(i) = "(" + expa + "+" + expb + ")"
                number(i) = a + b
                If Search(n - 1) Then
                    Search = True
                    Exit Function
                End If
                
                expression(i) = "(" + expa + "-" + expb + ")"
                number(i) = a - b
                If Search(n - 1) Then
                    Search = True
                    Exit Function
                End If
                
                expression(i) = "(" + expa + "-" + expb + ")"
                number(i) = b - a
                If Search(n - 1) Then
                    Search = True
                    Exit Function
                End If
                
                expression(i) = "(" + expa + "*" + expb + ")"
                number(i) = a * b
                If Search(n - 1) Then
                    Search = True
                    Exit Function
                End If
                
                If b <> 0 Then
                    expression(i) = "(" + expa + "/" + expb + ")"
                    number(i) = a / b
                    If Search(n - 1) Then
                        Search = True
                        Exit Function
                    End If
                End If
                
                If a <> 0 Then
                    expression(i) = "(" + expa + "/" + expb + ")"
                    number(i) = b / a
                    If Search(n - 1) Then
                        Search = True
                        Exit Function
                    End If
                End If
                
                number(i) = a
                number(j) = b
                expression(i) = expa
                expression(j) = expb
            Next j
        Next i
        Search = False
    End FunctionPrivate Sub Command1_Click()
        Dim i As Integer
        For i = 0 To COUNT_OF_NUMBER - 1
            number(i) = Text1(i).Text
            expression(i) = Text1(i).Text
        Next i
        
        If Search(COUNT_OF_NUMBER) Then
            Label2.Caption = "计算成功!"
        Else
            Label2.Caption = "计算失败!"
            Label1.Caption = ""
        End If
    End SubPrivate Sub Text1_GotFocus(Index As Integer)
        Text1(Index).SelStart = 0
        Text1(Index).SelLength = Len(Text1(Index))
    End Sub