Вычислить попарно расстояние между точками - VB (59805)
Формулировка задачи:
Заданы 10 пар координат одних точек Аi и Bi на плоскости и 10 пар других точек Ci Di(координаты считаются по расположению курсора мыши и отображаются на форме с помощью Label.)Вычислить попарно расстояние между точками Si=√((xi-Ai)^2+(Yi-Bi)^2).Занести расстояния в массив Si.Показать графически минимальный и максимальный отрезки выделить другими цветами.
Имеется такой код. Нужно дописать так, чтобы также выводились длины этих отрезков.
И еще - для чего нужно это?
Решение задачи: «Вычислить попарно расстояние между точками»
textual
Листинг программы
Option Explicit Dim a(1 To 10) As Integer Dim b(1 To 10) As Integer Dim c(1 To 10) As Integer Dim d(1 To 10) As Integer Dim s(1 To 10) As Integer Dim i As Integer Dim j As Integer Private Sub Form_Load() i = 1: j = 1 Label1 = "Координаты точек" & vbCrLf Exit Sub End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim min As Long, max As Long, k As Integer, k_min As Integer, k_max As Integer If i >= 11 And j >= 11 Then min = Sqr(ScaleWidth ^ 2 + ScaleHeight ^ 2) max = 0 For k = 1 To 10 s(k) = ((a(k) - c(k)) ^ 2 + (b(k) - d(k))) ^ 0.5 If s(k) < min Then min = s(k): k_min = k If s(k) > max Then max = s(k): k_max = k Next Me.PSet (a(k_min), b(k_min)), vbGreen Me.Circle (a(k_min), b(k_min)), 50, vbGreen Me.PSet (c(k_min), d(k_min)), vbGreen Me.Circle (c(k_min), d(k_min)), 50, vbGreen Me.Line (a(k_min), b(k_min))-(c(k_min), d(k_min)), vbGreen Me.PSet (a(k_max), b(k_max)), vbCyan Me.Circle (a(k_max), b(k_max)), 50, vbCyan Me.PSet (c(k_max), d(k_max)), vbCyan Me.Circle (c(k_max), d(k_max)), 50, vbCyan Me.Line (a(k_max), b(k_max))-(c(k_max), d(k_max)), vbCyan If i = 11 Then i = i + 1 For k = 1 To 10 s(k) = ((a(k) - c(k)) ^ 2 + (b(k) - d(k))) ^ 0.5 Label1 = Label1 & "Длина " & k & ":" & k & " = " & s(k) & vbCrLf Next Label1 = Label1 & "min (" & k_min & ":" & k_min & ") = " & min & vbCrLf & "max (" & k_max & ":" & k_max & ") = " & max & vbCrLf End If End If If j < 11 Then If i < 11 Then a(i) = X: b(i) = Y Me.PSet (X, Y), vbRed Me.Circle (X, Y), 50, vbRed Me.CurrentX = X + 50 Me.CurrentY = Y + 50 Me.Print i i = i + 1 Else c(j) = X: d(j) = Y Me.PSet (X, Y), vbBlue Me.Circle (X, Y), 50, vbBlue Me.CurrentX = X + 50 Me.CurrentY = Y + 50 Me.Print j j = j + 1 End If Label1 = Label1 & X & " : " & Y & vbCrLf End If Exit Sub End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д