Точки на координатной плоскости - C#

Узнай цену своей работы

Формулировка задачи:

Дано множество A из N точек. Среди всех точек этого множества, лежащих в первой|второй|третьей|четвертой четверти, найти точку, наиболее близкую|удаленную от начала координат. Если таких точек нет, то вывести точку с нулевыми координатами.

Решение задачи: «Точки на координатной плоскости»

textual
Листинг программы
class Program
{
    static void Main(string[] args)
    {
        //набор случайных точек
        Point[] points = new Point[20];
        for (int i = 0; i < points.Length; i++)
            points[i] = new Point();
 
        /*выбор квадранта и максимальной/минимальной точки в нем
        будем считать что пользователь вменяем и проверок на ввод чинить не нужно*/
        Console.Write("Введите четверть: ");
        int quadrant = int.Parse(Console.ReadLine());
        Point min = Point.MaxPoint;
        Point max = Point.MinPoint;
        foreach (Point point in points)
            if (point.GetQuadrant() == quadrant)
            {
                if (point.CompareTo(min) == -1)
                    min = point;
                if (point.CompareTo(max) == 1)
                    max = point;
            }
        Console.WriteLine("Max: {0}", max);
        Console.WriteLine("Min: {0}", min);
    }
}
 
class Point : IComparable<Point>
{
    static Random rand = new Random();
    public static readonly Point MinPoint = new Point(0, 0);
    public static readonly Point MaxPoint = new Point(int.MaxValue, int.MaxValue);
 
    public int X { get; private set; }
    public int Y { get; private set; }
 
    public Point()
    {
        this.X = rand.Next(-100, 100);
        this.Y = rand.Next(-100, 100);
    }
 
    public Point(int x, int y)
    {
        this.X = x;
        this.Y = y;
    }
 
    public int GetQuadrant()
    {
        int quadrant = 0;
        if (this.X > 0)
            if (this.Y > 0)
                quadrant = 1;
            else
                quadrant = 4;
        else
            if (this.Y > 0)
                quadrant = 2;
            else
                quadrant = 3;
        return quadrant;
    }
 
    public double VectorLength()
    {
        return Math.Sqrt(Math.Pow(X, 2) + Math.Pow(Y, 2));
    }
 
    public int CompareTo(Point other)
    {
        return this.VectorLength().CompareTo(other.VectorLength());
    }
 
    public override string ToString()
    {
        return string.Format("({0},{1}); Vector length = {2}", this.X, this.Y, this.VectorLength());
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5
Похожие ответы