wikail

Point & Poligon

Nov 29th, 2020
470
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. //1) Напишите объявление структуры, которая бы описывала точку на плоскости
  5. //2) ... которая бы описывала прямоугольник на плоскости (стороны параллельны осям)
  6. //3) Напишите функцию, которая получает координаты точки и список прямоугольников в качестве
  7. //входных аргументов и возвращает список тех прямоугольников, внутри которых лежит точка
  8.  
  9. namespace point_poligon
  10. {
  11.     class Program
  12.     {
  13.         //описываем точку
  14.         public struct Point
  15.         {
  16.             public int X;
  17.             public int Y;
  18.  
  19.             public void Increment()
  20.             {
  21.                 X++;
  22.                 Y++;
  23.             }
  24.         }
  25.  
  26.         //описываем прямоугольник
  27.         public struct Rectangle
  28.         {
  29.             public string Name;
  30.             //верхний левый угол
  31.             public int X;
  32.             public int Y;
  33.  
  34.             public int width; //ширина прямоугольника.
  35.             public int height; //высота прямоугольника
  36.         }
  37.  
  38.         //функция, которая получает координаты точки и список прямоугольников
  39.         //и возвращает список тех прямоугольников, внутри которых лежит точка
  40.         public static List<Rectangle> FindRectangles (Point z, List<Rectangle> lstIn)
  41.         {
  42.             List<Rectangle> lstOut = new List<Rectangle>();
  43.  
  44.             for (int i = 0; i < lstIn.Count; i++)
  45.             {
  46.                 if (z.X >= lstIn[i].X && z.X <= lstIn[i].X+ lstIn[i].width)
  47.                 {
  48.                     if (z.Y <= lstIn[i].Y && z.X >= lstIn[i].Y - lstIn[i].height)
  49.                     {
  50.                         lstOut.Add(lstIn[i]);
  51.                     }
  52.                 }
  53.             }
  54.  
  55.             return lstOut;
  56.         }
  57.  
  58.         static void Main(string[] args)
  59.         {
  60.             Point z;
  61.             z.X = 10;
  62.             z.Y = 5;
  63.  
  64.             Rectangle a;
  65.             a.Name = "a";
  66.             a.X = 10;
  67.             a.Y = 10;
  68.             a.width = 15;
  69.             a.height = 10;
  70.  
  71.             Rectangle b;
  72.             b.Name = "b";
  73.             b.X = 5;
  74.             b.Y = 15;
  75.             b.width = 10;
  76.             b.height = 20;
  77.  
  78.             Rectangle c;
  79.             c.Name = "c";
  80.             c.X = 15;
  81.             c.Y = 0;
  82.             c.width = 10;
  83.             c.height = 5;
  84.  
  85.             //собираем прямоугольники в список
  86.             List<Rectangle> lstRectangle = new List<Rectangle>();
  87.             {
  88.                 lstRectangle.Add(a);
  89.                 lstRectangle.Add(b);
  90.                 lstRectangle.Add(c);
  91.             }
  92.            
  93.             foreach (Rectangle i in FindRectangles(z, lstRectangle))
  94.             {
  95.                 Console.WriteLine(i.Name);
  96.             }                        
  97.         }
  98.     }
  99. }
RAW Paste Data