Advertisement
Nikolay_Kashev

Closest_Two_Points

May 27th, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.42 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace _05._Closest_Two_Points
  5. {
  6.     class Point
  7.     {
  8.         public int X { get; set; }
  9.         public int Y { get; set; }
  10.  
  11.         //public Point(int x, int y)
  12.         //{
  13.         //    X = x;
  14.         //    Y = y;
  15.         //}
  16.     }
  17.  
  18.     class Program
  19.     {
  20.         static void Main(string[] args)
  21.         {
  22.             Point[] points = ReadPoints();
  23.             Point[] closestPoints = FindClosestTwoPoints(points);
  24.  
  25.             PrintDistance(closestPoints);
  26.  
  27.             PrintPoint(closestPoints[0]);
  28.             PrintPoint(closestPoints[1]);
  29.  
  30.         }
  31.  
  32.         static Point[] ReadPoints()
  33.         {
  34.             int n = int.Parse(Console.ReadLine());
  35.  
  36.             Point[] points = new Point[n];
  37.             for (int i = 0; i < n; i++)
  38.             {
  39.                 points[i] = ReadPoint();
  40.             }
  41.  
  42.             return points;
  43.         }
  44.  
  45.         static Point ReadPoint()
  46.         {
  47.             int[] pointInfo = Console.ReadLine().Split()
  48.                .Select(int.Parse).ToArray();
  49.             Point point = new Point();
  50.             point.X = pointInfo[0];
  51.             point.Y = pointInfo[1];
  52.             return point;
  53.         }
  54.  
  55.         static double CalcDistance(Point p1, Point p2)
  56.         {
  57.             int deltaX = p2.X - p1.X;
  58.             int deltaY = p2.Y - p1.Y;
  59.             return Math.Sqrt(deltaX * deltaX + deltaY * deltaY);
  60.         }
  61.  
  62.         static void PrintPoint(Point point)
  63.         {
  64.             Console.WriteLine("({0}, {1})", point.X, point.Y);
  65.         }
  66.  
  67.         static void PrintDistance(Point[] points)
  68.         {
  69.             double distance = CalcDistance(points[0], points[1]);
  70.             Console.WriteLine("{0:f3}", distance);
  71.         }
  72.  
  73.         static Point[] FindClosestTwoPoints(Point[] points)
  74.         {
  75.             double minDistance = double.MaxValue;
  76.             Point[] closestTwoPoints = null;
  77.             for (int p1 = 0; p1 < points.Length; p1++)
  78.                 for (int p2 = p1 + 1; p2 < points.Length; p2++)
  79.                 {
  80.                     double distance = CalcDistance(points[p1], points[p2]);
  81.                     if (distance < minDistance)
  82.                     {
  83.                         minDistance = distance;
  84.                         closestTwoPoints = new Point[] { points[p1], points[p2] };
  85.                     }
  86.                 }
  87.             return closestTwoPoints;
  88.         }
  89.  
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement