Определить номера точек, расстояние между которыми минимальное - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Подскажите Заданы координаты N точек в пространстве. Необходимо определить номера точек, расстояние между которыми минимальное

Решение задачи: «Определить номера точек, расстояние между которыми минимальное»

textual
Листинг программы
Private Structure pnt
    Public x As Integer
    Public y As Integer
    Public z As Integer
    Public Sub New(ByVal xx As Integer, ByVal yy As Integer, ByVal zz As Integer)
        x = xx
        y = yy
        z = zz
    End Sub
End Structure
Private Structure dst
    Public s As Integer
    Public nm1 As Integer
    Public nm2 As Integer
    Public Sub New(ByVal ss As Integer, ByVal nn1 As Integer, ByVal nn2 As Integer)
        s = ss
        nm1 = nn1
        nm2 = nn2
    End Sub
End Structure
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    'моделируем точки
    Dim rnd As New Random
    Dim n As Integer = 100
    Dim pp(n - 1) As pnt
    For i = 0 To n - 1
        pp(i) = New pnt(rnd.Next(0, 1001), rnd.Next(0, 1001), rnd.Next(0, 1001))
    Next
    'определяем расстояния
    Dim dist As New List(Of dst)
    Dim distance = Function(p1 As pnt, p2 As pnt) As Integer
                       Return CInt(Math.Sqrt((p1.x - p2.x) ^ 2 + (p1.y - p2.y) ^ 2 + (p1.z - p2.z) ^ 2))
                   End Function
    For i = 0 To n - 2
        For j = i + 1 To n - 1
            dist.Add(New dst(distance(pp(i), pp(j)), i, j))
        Next
    Next
    'сортируем в порядке возрастания и находим min/max
    Dim srt(dist.Count - 1) As Integer
    For i = 0 To dist.Count - 1
        srt(i) = dist(i).s
    Next
    Dim ar() As dst = dist.ToArray
    Array.Sort(srt, ar)
    MsgBox("min S = " & ar(0).s & " n1 = " & ar(0).nm1 & " n2 = " & ar(0).nm2 & vbCrLf & _
           "max S = " & ar(ar.Length - 1).s & " n1 = " & ar(ar.Length - 1).nm1 & " n2 = " & ar(ar.Length - 1).nm2)
End Sub

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

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