На плоскости заданы n отрезков координатами концевых точек - C#

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

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

На плоскости заданы n отрезков координатами концевых точек. Концы отрезков задаются двумя парами координат (x1[i],y1[i]), (x2[i],y2[i]), 1<=i<=n (концы принадлежат отрезку). Помогите пожалуйста.
Пропустил основное. Вот суть задачи : Необходимо найти прямую, имеющую общие точки с максимальным числом отрезков, и напечатать в порядке возрастания номера тех отрезков, которые эта прямая пересекает.

Решение задачи: «На плоскости заданы n отрезков координатами концевых точек»

textual
Листинг программы
  1. using System;
  2.  
  3. class Program
  4. {
  5.     static void Main()
  6.     {
  7.         int n = 5, max = 0, index = 0;
  8.         Line[] lines = new Line[n];
  9.         Random r = new Random();
  10.  
  11.         for (int i = 0; i < n; i++ )
  12.         {
  13.             lines[i] = new Line(r.Next(1, n + 1), r.Next(1, n + 1), r.Next(1, n + 1), r.Next(1, n + 1));
  14.             Console.WriteLine("{0}. ({1},{2}) ({3},{4})", i, lines[i].x1, lines[i].y1, lines[i].x2, lines[i].y2);
  15.         }
  16.  
  17.         for (int i = 0; i < n; i++)
  18.         {
  19.             int count = 0;
  20.             for (int j = 0; j < n; j++)
  21.                 if (i != j && lines[i].Compare(lines[j]))
  22.                     count++;
  23.             if (count > max)
  24.             {
  25.                 max = count;
  26.                 index = i;
  27.             }
  28.         }
  29.         Console.WriteLine("Прямая, имеющая общие точки с максимальным числом отрезков: " + index);
  30.         Console.Write("Номера пересекаемых отрезков: ");
  31.         for (int i = 0; i < n; i++)
  32.             if (i != index && lines[index].Compare(lines[i]))
  33.                 Console.Write(i + " ");
  34.         Console.ReadKey();
  35.     }
  36. }
  37.  
  38. class Line
  39. {
  40.     public int x1 { get; private set; }
  41.     public int x2 { get; private set; }
  42.     public int y1 { get; private set; }
  43.     public int y2 { get; private set; }
  44.  
  45.     public Line(int x1, int y1, int x2, int y2)
  46.     {
  47.         this.x1 = x1 < x2 ? x1 : x2;
  48.         this.x2 = x2 < x1 ? x1 : x2;
  49.         this.y1 = y1 < y2 ? y1 : y2;
  50.         this.y2 = y2 < y1 ? y1 : y2;
  51.     }
  52.  
  53.     public bool Compare(Line target)
  54.     {
  55.         if (x1 <= target.x2 && x2 >= target.x1 && y1 <= target.y2 && y2 >= target.y1)
  56.             return true;
  57.         return false;
  58.     }
  59. }

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


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

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

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы