VB编程:编写求解一元二次方程 ax2+bx+c=0  的过程,要求a、b、c及解X1、X2都以参数传送的方式与主程序交换数据,输入a,b,c和输出X1,X2的操作入放在主程序中。

解:一元二次方程 ax2+bx+c=0  的解通常有以下几种可能。
(1)当a=0时,不是二次方程,不进行处理。
(2)当b2-4ac=0时,方程有两个相等实根。
(2)当b2-4ac>0时,方程有两个不等实根。
(2)当b2-4ac<0时,方程有两个共轭实根。

求解一元二次方程的通用过程如下:

Sub equa(a As Single, b As Single, c As Single, x1, x2)
    If Abs(a) <= 0.000001 Then
        MsgBox "该方程不是二次方程"
        Exit Sub
    Else
        disc = b * b - 4 * a * c
    End If

    If Abs(disc) <= 0.000001 Then
        Flag = 1
        x1 = -b / (2 * a)
        x2 = -b / (2 * a)
    ElseIf disc > 0.000001 Then
        Flag = 2
        x1 = (-b + Sqr(disc)) / (2 * a)
        x2 = (-b - Sqr(disc)) / (2 * a)
    Else
        Flag = 3
        realpart = -b / (2 * a)
        imagpart = Sqr(-disc) / (2 * a)
        x1 = realpart & "+" & imagpart & "i"
        x2 = realpart & "-" & imagpart & "i"
    End If
End Sub


    在上面的过程中,首先判断a的值是否为0,如果为0则退出。如果不为0,则计算判别式b2-4ac的值,并把它赋予变量disc。这里应注意,disc是一个实数,由于实数在计算和存储会有一些小的误差,因此不能直接判断disc是否等于0,因为这样可能会出现本来是0的量,由于上述误差而被判定为等于0,从而导致结果错误。这里采取的办法是,判别disc的绝对值(Abs(disc))是否小于一个很小的数(例如10-6),如果小于此数,则认为disc=0。过程用realpart和imagpart分别代表实部和虚部。
    上述过程中的Flag是一个标志变量,在窗体层定义,当该变量为1,2和3时,分别代表方程有两个相同实根,两个不同的实根和两个共轭复根三种情况。通过一个Function过程来返回这三种情况,该过程如下:

Function RootRet() As String
    If Flag = 1 Then
        RootRet = "方程有两个相等实根"
    ElseIf Flag = 2 Then
        RootRet = "方程有两个不等实根"
    ElseIf Flag = 2 Then
        RootRet = "方程有两个共轭实根"
    End If
End Function


该过程中的Flag的值在Equa过程中赋予。其初值为0,在Form_load过程中设置,过程如下:
Private Sub Form_Load()
    Flag = 0
End Sub

在下面的事件过程中调用上面的两个通用过程,输出一元二次方程的解:
Private Sub Form_click()
    equa 2, 6, 1, x1, x2
    Print
    Print "a=2,b=6,c=1"
    Print RootRet
    Print "x1="; x1, "x2="; x2
    Print
    Flag = 0

    equa 1, 2, 1, x1, x2
    Print
    Print "a=1,b=2,c=1"
    Print RootRet
    Print "x1="; x1, "x2="; x2
    Print
    Flag = 0

    equa 1, 2, 2, x1, x2
    Print
    Print "a=1,b=2,c=2"
    Print RootRet
    Print "x1="; x1, "x2="; x2
    Flag = 0
End Sub

该过程通过三组数调用Equa和RootRet过程。这里直接对a,b,c进行赋值,也可以用InputBox函数从键盘上输入。程序运行后单击窗体,结果如下图所示。

来源:visual basic程序设计教程第四版答案(刘炳文)

本文链接:http://www.wb98.com/vb1/post/vb_9.5.html

本站文章搜索:

<< 上一篇下一篇 >>

搜索

Tags列表

扫我手机登录

赞助商链接