Опишите структуру Point2, соответствующую точкам на плоскости - C#
Формулировка задачи:
Здравствуйте. Помогите, пожалуйста, с решением данной задачи, используя структуру и функцию.
Помогите, пожалуйста, привести к нормальному виду, с помощью структуры и функции.
Опишите структуру Point2, соответствующую точкам на плоскости. Определите функцию, вычисляющую расстояние от некоторой точки до прямой, заданной двумя другими точками. Напишите программу, использующую эту функцию. Предусмотрите обработку исключительных ситуаций.
Я тут попытался решить по-своему, используя эту формулу: Получилось вот что:using System; class Program { static void Main() { double x, y, x0, y0, x1, y1, d, k; Console.Write("x="); x = int.Parse(Console.ReadLine()); Console.Write("y="); y = int.Parse(Console.ReadLine()); Console.Write("x0="); x0 = int.Parse(Console.ReadLine()); Console.Write("y0="); y0 = int.Parse(Console.ReadLine()); Console.Write("x1="); x1 = int.Parse(Console.ReadLine()); Console.Write("y1="); y1 = int.Parse(Console.ReadLine()); k = Math.Sqrt((Math.Pow(x1 - x0, 2)) + Math.Pow(y1 - y0, 2)); if (k == 0) { throw new DivideByZeroException(); } d = ((y0 - y1) * x + (x1 - x0) * y + (x0 * y1 - x1 * y0)) / k; Console.Write("d={0}", d); } }
Решение задачи: «Опишите структуру Point2, соответствующую точкам на плоскости»
textual
Листинг программы
struct Vector { public double X; public double Y; public double Length { get { return Math.Sqrt(this * this); } } public Vector Normal { // единичный вектор перпендикулярный данному get { return new Vector() { X = -this.Y, Y = this.X } / Length; } } public static Vector operator -(Vector a, Vector b) { return new Vector() { X = a.X - b.X, Y = a.Y - b.Y }; } public static Vector operator/(Vector a, double b) { return new Vector() { X = a.X / b, Y = a.Y / b }; } public static double operator *(Vector a, Vector b) { // скалярное произведение return a.X * b.X + a.Y * b.Y; } } struct Line { public Vector Start; public Vector End; public double Distance(Vector Point) { return Point * (End - Start).Normal ; } public static double Distance(Vector LineStart, Vector LineEnd, Vector Point) { return new Line() { Start = LineStart, End = LineEnd }.Distance(Point); } } class Program { static void Main(string[] args) { Console.WriteLine( new Line() { Start = new Vector() { X = 0, Y = 0 }, End = new Vector() { X = 1, Y = 1 } }.Distance(new Vector() { X = 0, Y = 1 })); Console.ReadLine(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д