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