学校创客社团开展机器人比赛活动,其中设置了机器人循迹项目。比赛规则如下:给出10* 10规模的矩阵地图,随机设定4个循迹点,小车以蛇形路线找到循迹点后,计算最长的两点直线距离。矩阵图中以0表示非循迹点,1表示循迹点,循迹过程如图a所示:
编写一个VB程序实现如下功能:单击“开始循迹”按钮Command1,呈现10*10矩阵地图,并随机生成4个循迹点,分别用数字1表示,数字0表示非循迹点;计算4点中相距最远的两点的直线距离,显示在标签Label1中。程序运行界面如图b所示。
(1)
若随机生成的4个循迹点如图a所示,则该4点中相距最远的两点直线距离为。
(2)
实现上述功能的VB程序如下,请在划线处填入合适的代码。
Const n = 10
Const m=4
Dim b(1 To 8) As Integer
Private Sub Command1_Click()
Dim f(1 To n* n) As Integer
Dim i As Integer, j As Integer
Dim w As Integer, k As Integer
Dim length As Single, maxlen As Single
Dim s As String
'生成矩阵地图和随机生成4个循迹点,0表示非循迹点,1表示循迹点,存于数组f中,代码略。
For i= 1 To n^2 '显示矩阵地图和4个循迹点
s = s+ Str(f(i))
If i Mod n=0 Then
List1. AddItem s
s=" "
End If
Next i
w=1
For i=1 To n
For j=1 To n
k = (n+1)* ((i-1) Mod 2)+(-1)-(i-1) * j
If Then '记录循迹点所在位置
b(2*w-1)=i
b(2*w)=k
w=w+1
End If
Next j
Next i
i=1
maxlen = 0
Do While i<=m-1
For j=i+1 To m
If length > maxlen Then maxlen = length
Next j
i= i+1
Loop
Label1. Caption = Str( maxlen)
End Sub
Function reck(x As Integer, y As Integer) As Single
Dim c As Integer, d As Integer
Dim h As Single
c=
d=Abs(b(2*x)-b(2*y))
h=Sqr(c^2+d^2)
reck = h
End Function
答案: 【1】5
【1】f((i-1)*n+k)=1【2】length = reck(i, j)【3】Abs(b(2*x-1)-b(2*y-1))或b(2*x-1)-b(2*y-1)