小明需要根据订单的取件距离依次安排快递员取件。快递员出发后不能中途折返,但可以接更远距离的快递订单。当小明新接到一个取件订单,他会依次安排可以取件的快递员取件,若该订单距离小于所有已出发的快递员的最远距离,则安排新的快递员出发取件。编写VB程序,实现上述功能。程序运行时,在文本框Text1中输入订单距离(各数值之间用“,”隔开),单击“安排”按钮Command1后,在标签Label2中显示最后一件快递的收取情况。运行界面如图所示。
(1)
运行窗体中,具有Caption属性的对象共有类。
(2)
若快递订单的取件距离依次为“243,123,167,309,183,229,87,333,183”,则最后距离为183的订单由号快递员收取。
(3)
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Dim dd(0 To 100) As Integer
'记录所有订单的取件距离
Dim fp(0 To 100) As Integer
'存储第x个快递员取件的最远距离
Dim xs(0 To 100) As String
Private Sub Command1_Click()
Dim n As Integer,i As
Integer,k As Integer,s As
String
Dim left As Integer,right As
Integer,m As Integer
Dim x As Integer,r As
Integer
Randomize
s = Text1.Text: n = 1: i = 1
Do While i <= Len(s)
k = i: ch = Mid(s, k, 1)
Do
While
k
= k + 1: ch = Mid(s,k,1)
Loop
dd(n) = Val(Mid(s,i,k - i))
i =
k + 1: n = n + 1
Loop
x = 1: fp(x) = dd(1)
For i = 2 To n - 1
left = 1
right = x
Do
While left <= right
m = (left + right) \ 2
If Then
right = m - 1
Else
left = m + 1
End If
Loop
fp(r) = dd(i) If r = x + 1 Then x = x + 1 Next i Label2.Caption = "第" + Str(i - 1) + "件快递将由第" + Str(r) + "号快递员收取" '列表框List1中显示每位快递员的收取情况,代码略 End Sub
(4)
程序加框处代码有错,请改正
答案: 【1】2
【1】3
【1】ch <> "," And k <= Len(s)【2】fp(m) <= dd(i)
r = left