Вычислить попарно расстояние между точками - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы