Определить номера точек, расстояние между которыми минимальное - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д