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

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

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

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

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

textual
Листинг программы
  1. Private Structure pnt
  2.     Public x As Integer
  3.     Public y As Integer
  4.     Public z As Integer
  5.     Public Sub New(ByVal xx As Integer, ByVal yy As Integer, ByVal zz As Integer)
  6.         x = xx
  7.         y = yy
  8.         z = zz
  9.     End Sub
  10. End Structure
  11. Private Structure dst
  12.     Public s As Integer
  13.     Public nm1 As Integer
  14.     Public nm2 As Integer
  15.     Public Sub New(ByVal ss As Integer, ByVal nn1 As Integer, ByVal nn2 As Integer)
  16.         s = ss
  17.         nm1 = nn1
  18.         nm2 = nn2
  19.     End Sub
  20. End Structure
  21. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
  22.     'моделируем точки
  23.     Dim rnd As New Random
  24.     Dim n As Integer = 100
  25.     Dim pp(n - 1) As pnt
  26.     For i = 0 To n - 1
  27.         pp(i) = New pnt(rnd.Next(0, 1001), rnd.Next(0, 1001), rnd.Next(0, 1001))
  28.     Next
  29.     'определяем расстояния
  30.     Dim dist As New List(Of dst)
  31.     Dim distance = Function(p1 As pnt, p2 As pnt) As Integer
  32.                        Return CInt(Math.Sqrt((p1.x - p2.x) ^ 2 + (p1.y - p2.y) ^ 2 + (p1.z - p2.z) ^ 2))
  33.                    End Function
  34.     For i = 0 To n - 2
  35.         For j = i + 1 To n - 1
  36.             dist.Add(New dst(distance(pp(i), pp(j)), i, j))
  37.         Next
  38.     Next
  39.     'сортируем в порядке возрастания и находим min/max
  40.     Dim srt(dist.Count - 1) As Integer
  41.     For i = 0 To dist.Count - 1
  42.         srt(i) = dist(i).s
  43.     Next
  44.     Dim ar() As dst = dist.ToArray
  45.     Array.Sort(srt, ar)
  46.     MsgBox("min S = " & ar(0).s & " n1 = " & ar(0).nm1 & " n2 = " & ar(0).nm2 & vbCrLf & _
  47.            "max S = " & ar(ar.Length - 1).s & " n1 = " & ar(ar.Length - 1).nm1 & " n2 = " & ar(ar.Length - 1).nm2)
  48. End Sub

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


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

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

9   голосов , оценка 3.556 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы