问题:
写一个函数,已知一段坐标信息的字符串为:"260,270|290,260|310,230|320,200,10|300,150|280,150,10|270,130|250,130",计算得出离185,246坐标最近的一组坐标。提示:For循环与数组应用。
答案:
TracePrint 坐标最近判断("260,270|290,260|310,230|320,200|300,150|280,150|270,130|250,130", "185,246")
EndScript
Function 坐标最近判断(信息, 坐标)
Dim Arr, Str, StrX, StrY, Ping, a, b, c, i
//信息分离
Arr = Split(信息, "|")
//坐标分离
Str = Split(坐标, ",")
//提取坐标X与Y值
StrX = Clng(Str(0)) : StrY = Clng(Str(1))
//勾股定理计算每个坐标到指定坐标的平方值
For i = 0 To UBound(Arr)
If i = 0 Then
Ping = (Abs(Clng(Split(Arr(i), ",")(0)) - StrX)) ^ 2 + (Abs(Clng(Split(Arr(i), ",")(1)) - StrY)) ^ 2
Else
Ping = Ping & "/" & (Abs(Clng(Split(Arr(i), ",")(0)) - StrX)) ^ 2 + (Abs(Clng(Split(Arr(i), ",")(1)) - StrY)) ^ 2
End If
Next
TracePrint Ping
b = Split(Ping, "/") : a = 0 : c = b(0)
TracePrint c
For i = 1 To UBound(b)
TracePrint "b(" & i & ")=" & b(i)
If Clng(b(i)) < Clng(c) Then
c = b(i)
a = i
End If
Next
坐标最近判断 = Arr(a)
End Function