Advertisement
Infiniti_Inter

14-I (S)

Dec 9th, 2019
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.39 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Text.RegularExpressions;
  7. using System.IO;
  8.  
  9.  
  10. namespace ConsoleApp1
  11. {
  12.     struct SPoint : IComparable<SPoint>
  13.     {
  14.         public int x, y;
  15.         private double maxDistance;
  16.  
  17.         public int X, Y;//парная точка
  18.  
  19.         public SPoint(int x, int y)
  20.         {
  21.             this.x = x; this.y = y;
  22.             maxDistance = -1;
  23.             X = Y = -1;
  24.         }
  25.         public void Show()
  26.         {
  27.             Console.WriteLine("({0}, {1})", x, y);
  28.         }
  29.         public double Distance()//дистанция до начала координат
  30.         {
  31.             return Math.Sqrt(x * x + y * y);
  32.         }
  33.         private double Sqr(int x) { return x * x; }
  34.         public double Distance(SPoint obj)//дистанция до точки
  35.         {
  36.             return Math.Sqrt(Sqr(x - obj.x) + Sqr(y - obj.y));
  37.         }
  38.         public void findMaxRange(SPoint[] p)//ищет для точки максимально удаленную точку в массиве
  39.         {
  40.             for (int i = 0; i < p.Length; ++i)
  41.             {
  42.                 double range = this.Distance(p[i]);
  43.                 if (maxDistance < range)
  44.                 {
  45.                     maxDistance = range;
  46.                     X = p[i].x;
  47.                     Y = p[i].y;
  48.                 }
  49.                
  50.             }
  51.         }
  52.  
  53.         public int CompareTo(SPoint obj)// нужно для использования команды array.Sort();
  54.         {
  55.             if (this.maxDistance == obj.maxDistance)
  56.             {
  57.                 return 0;
  58.             }
  59.             else
  60.             {
  61.                 if (this.maxDistance > obj.maxDistance)
  62.                 {
  63.                     return 1;
  64.                 }
  65.                 else
  66.                 {
  67.                     return -1;
  68.                 }
  69.             }
  70.         }
  71.     }
  72.     class Program
  73.     {
  74.         static public SPoint[] Input() //ввод массива точек
  75.         {
  76.             using (StreamReader fileIn = new StreamReader(@"C:/Users/karpenkoos/desktop/input.txt"))
  77.             {
  78.                 int n = int.Parse(fileIn.ReadLine());// n > 1!!!!!!!!!!!!!!
  79.                 SPoint[] ar = new SPoint[n];
  80.                 for (int i = 0; i < n; i++)
  81.                 {
  82.                     string[] text = fileIn.ReadLine().Split(' ');
  83.                     ar[i] = new SPoint(int.Parse(text[0]), int.Parse(text[1]));
  84.                 }
  85.                 return ar;
  86.             }
  87.         }
  88.         static void Print(SPoint[] array)//вывод массива точек
  89.         {
  90.             foreach (SPoint item in array)
  91.             {
  92.                 item.Show();
  93.             }
  94.         }
  95.         static void Main()
  96.         {
  97.             SPoint[] array = Input();
  98.             for (int i = 0; i < array.Length; ++i)
  99.                 array[i].findMaxRange(array);
  100.             Array.Sort(array);
  101.             Console.WriteLine("Упорядоченные данные: ");
  102.             Print(array);
  103.  
  104.             Console.WriteLine("Две наиболее удаленные точки:");
  105.             SPoint ans1 = array[array.Length - 1];
  106.             SPoint ans2 = new SPoint(ans1.X, ans1.Y);
  107.             ans1.Show();
  108.             ans2.Show();
  109.  
  110.         }
  111.     }
  112. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement