На плоскости заданы n отрезков координатами концевых точек - C#
Формулировка задачи:
На плоскости заданы n отрезков координатами концевых точек. Концы отрезков задаются двумя парами координат (x1[i],y1[i]), (x2[i],y2[i]), 1<=i<=n (концы принадлежат отрезку).
Помогите пожалуйста.
Пропустил основное. Вот суть задачи :
Необходимо найти прямую, имеющую общие точки с максимальным числом отрезков, и напечатать в порядке возрастания номера тех отрезков, которые эта прямая пересекает.
Решение задачи: «На плоскости заданы n отрезков координатами концевых точек»
textual
Листинг программы
using System; class Program { static void Main() { int n = 5, max = 0, index = 0; Line[] lines = new Line[n]; Random r = new Random(); for (int i = 0; i < n; i++ ) { lines[i] = new Line(r.Next(1, n + 1), r.Next(1, n + 1), r.Next(1, n + 1), r.Next(1, n + 1)); Console.WriteLine("{0}. ({1},{2}) ({3},{4})", i, lines[i].x1, lines[i].y1, lines[i].x2, lines[i].y2); } for (int i = 0; i < n; i++) { int count = 0; for (int j = 0; j < n; j++) if (i != j && lines[i].Compare(lines[j])) count++; if (count > max) { max = count; index = i; } } Console.WriteLine("Прямая, имеющая общие точки с максимальным числом отрезков: " + index); Console.Write("Номера пересекаемых отрезков: "); for (int i = 0; i < n; i++) if (i != index && lines[index].Compare(lines[i])) Console.Write(i + " "); Console.ReadKey(); } } class Line { public int x1 { get; private set; } public int x2 { get; private set; } public int y1 { get; private set; } public int y2 { get; private set; } public Line(int x1, int y1, int x2, int y2) { this.x1 = x1 < x2 ? x1 : x2; this.x2 = x2 < x1 ? x1 : x2; this.y1 = y1 < y2 ? y1 : y2; this.y2 = y2 < y1 ? y1 : y2; } public bool Compare(Line target) { if (x1 <= target.x2 && x2 >= target.x1 && y1 <= target.y2 && y2 >= target.y1) return true; return false; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д