Infiniti_Inter

практикум 14 задание I

Nov 2nd, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.82 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. namespace ConsoleApp1
  10. {
  11.  
  12.     static class GlobalVar
  13.     {
  14.         static public double R;
  15.     }
  16.     struct SPoint : IComparable<SPoint>
  17.     {
  18.  
  19.  
  20.         public int x, y;
  21.         private int countOfPoint;
  22.         static private double R;
  23.         public SPoint(int x, int y)
  24.         {
  25.             this.x = x; this.y = y;
  26.             countOfPoint = 0;
  27.            
  28.             R = GlobalVar.R;
  29.         }
  30.  
  31.         static public void calculate(SPoint[] a)
  32.         {
  33.             for (int j = 0; j < a.Length; ++j)
  34.             {
  35.                 ref SPoint cur = ref a[j];
  36.                 for (int i = 0; i < a.Length; ++i)
  37.                     if (Distance(cur, a[i]) <= R)
  38.                         cur.countOfPoint++;
  39.             }
  40.         }
  41.         public void Show()
  42.         {
  43.             Console.WriteLine("({0}, {1})", x, y);
  44.         }
  45.         static private double sqr(double a)
  46.         {
  47.             return a * a;
  48.         }
  49.         static public double Distance(SPoint a, SPoint b)
  50.         {
  51.             return Math.Sqrt(sqr(a.x - b.x) + sqr(a.y - b.y));
  52.         }
  53.         public int CompareTo(SPoint obj)
  54.         {
  55.  
  56.             if (this.countOfPoint == obj.countOfPoint)
  57.             {
  58.                 return 0;
  59.             }
  60.             else
  61.             {
  62.                 if (this.countOfPoint > obj.countOfPoint)
  63.                 {
  64.                     return 1;
  65.                 }
  66.  
  67.                 else
  68.                 {
  69.                     return -1;
  70.                 }
  71.             }
  72.         }
  73.     }
  74.     class Program
  75.     {
  76.  
  77.  
  78.         static void Print(SPoint[] array) //выводим данные на экран
  79.         {
  80.             foreach (SPoint item in array)
  81.             {
  82.                 item.Show();
  83.             }
  84.         }
  85.  
  86.         static void Main()
  87.         {
  88.             using (StreamReader file = new StreamReader("d:/input.txt"))
  89.             {
  90.                 int n = Int32.Parse(file.ReadLine());
  91.                 GlobalVar.R = Double.Parse(file.ReadLine());
  92.                 SPoint[] a = new SPoint[n];
  93.                 for (int i = 0; i < n; ++i)
  94.                 {
  95.                     int x, y;
  96.                     string [] line = file.ReadLine().Split();
  97.                     x = int.Parse(line[0]);
  98.                     y = int.Parse(line[1]);
  99.                     a[i] = new SPoint(x, y);
  100.                 }
  101.                 SPoint.calculate(a);
  102.                 Array.Sort(a); //Вызов стандартной сортировки для класса Array
  103.                 Console.WriteLine("Упорядоченные данные: ");
  104.                 Print(a);
  105.             }
  106.         }
  107.     }
  108. }
Add Comment
Please, Sign In to add comment