Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Text.RegularExpressions;
- using System.IO;
- namespace ConsoleApp1
- {
- struct SPoint : IComparable<SPoint>
- {
- public int x, y;
- private double maxDistance;
- public int X, Y;//парная точка
- public SPoint(int x, int y)
- {
- this.x = x; this.y = y;
- maxDistance = -1;
- X = Y = -1;
- }
- public void Show()
- {
- Console.WriteLine("({0}, {1})", x, y);
- }
- public double Distance()//дистанция до начала координат
- {
- return Math.Sqrt(x * x + y * y);
- }
- private double Sqr(int x) { return x * x; }
- public double Distance(SPoint obj)//дистанция до точки
- {
- return Math.Sqrt(Sqr(x - obj.x) + Sqr(y - obj.y));
- }
- public void findMaxRange(SPoint[] p)//ищет для точки максимально удаленную точку в массиве
- {
- for (int i = 0; i < p.Length; ++i)
- {
- double range = this.Distance(p[i]);
- if (maxDistance < range)
- {
- maxDistance = range;
- X = p[i].x;
- Y = p[i].y;
- }
- }
- }
- public int CompareTo(SPoint obj)// нужно для использования команды array.Sort();
- {
- if (this.maxDistance == obj.maxDistance)
- {
- return 0;
- }
- else
- {
- if (this.maxDistance > obj.maxDistance)
- {
- return 1;
- }
- else
- {
- return -1;
- }
- }
- }
- }
- class Program
- {
- static public SPoint[] Input() //ввод массива точек
- {
- using (StreamReader fileIn = new StreamReader(@"C:/Users/karpenkoos/desktop/input.txt"))
- {
- int n = int.Parse(fileIn.ReadLine());// n > 1!!!!!!!!!!!!!!
- SPoint[] ar = new SPoint[n];
- for (int i = 0; i < n; i++)
- {
- string[] text = fileIn.ReadLine().Split(' ');
- ar[i] = new SPoint(int.Parse(text[0]), int.Parse(text[1]));
- }
- return ar;
- }
- }
- static void Print(SPoint[] array)//вывод массива точек
- {
- foreach (SPoint item in array)
- {
- item.Show();
- }
- }
- static void Main()
- {
- SPoint[] array = Input();
- for (int i = 0; i < array.Length; ++i)
- array[i].findMaxRange(array);
- Array.Sort(array);
- Console.WriteLine("Упорядоченные данные: ");
- Print(array);
- Console.WriteLine("Две наиболее удаленные точки:");
- SPoint ans1 = array[array.Length - 1];
- SPoint ans2 = new SPoint(ans1.X, ans1.Y);
- ans1.Show();
- ans2.Show();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement