Найти расстояние между двумя заданными множествами на плоскости - C#

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

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

Досталось такое задание: Расстояние между двумя множествами точек – это расстояние между наиболее близко расположенными точками этих множеств. Найти расстояние между двумя заданными множествами на плоскости. Как решить?

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

textual
Листинг программы
using System;
using System.Collections.Generic;
 
namespace ConsoleApplication1
{
    class Program
    {
        struct Point
        {
            public double X;
            public double Y;
 
            public Point(double x, double y)
            {
                X = x;
                Y = y;
            }
 
            public override string ToString()
            {
                return X + ";" + Y;
            }
        }
 
        static Random random = new Random();
 
        static void Main(string[] args)
        {
            List<Point> A = new List<Point>();
            List<Point> B = new List<Point>();
 
            FillListWithRandomData(A, 7);
            FillListWithRandomData(B, 3);
 
            Point p1 = new Point(-1, -1), p2 = new Point(-1, -1);
            double d;
            double min_d = double.PositiveInfinity;
            foreach (var point1 in A)
            {
                foreach (var point2 in B)
                {
                    d = Math.Sqrt(Math.Pow(point1.X - point2.X, 2) + Math.Pow(point1.Y - point2.Y, 2));
                    if (d < min_d)
                    {
                        min_d = d;
                        p1 = point1;
                        p2 = point2;
                    }
                }
            }
 
            PrintList(A);
            PrintList(B);
            Console.WriteLine("Min dist between {0} and {1} : {2}", p1, p2, min_d);
            Console.ReadKey();
        }
 
        static void FillListWithRandomData(List<Point> list, int count)
        {
            for (int i = 0; i < count; i++)
            {
                list.Add(new Point(random.Next(0, 51), random.Next(0, 51)));
            }
        }
 
        static void PrintList(List<Point> list)
        {
            Console.WriteLine(String.Join(" ", list));
        }
    }
}

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


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

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

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