Задача на геометрическое построение - C#
Формулировка задачи:
Дан отрезок а, длиной равной сумме длин стороны некоторого квадрата и его
диагонали. Постройте квадрат по этим данным так, чтобы его вершина А была расположена
в начале координат, а сам квадрат полностью располагался в I-ом квадранте.
Спецификации ввода (файл Inlet.in)
Xa1 Ya1
Xa2 Ya2
Спецификации вывода (файл Outlet.out)
XA YA
XB YB
XC YC
XD YD
Решение задачи: «Задача на геометрическое построение»
textual
Листинг программы
static void Main(string[] args) { //Чтение строк из файла string[] text = File.ReadLines("Inlet.in").ToArray(); //Разбиваем по пробелу первую строку string[] line = text[0].Split(); //Координаты первой точки var pt1 = new PointF( float.Parse(line[0], CultureInfo.InvariantCulture), float.Parse(line[1], CultureInfo.InvariantCulture)); //Разбиваем по пробелу вторую строку line = text[1].Split(); //Координаты второй точки var pt2 = new PointF( float.Parse(line[0], CultureInfo.InvariantCulture), float.Parse(line[1], CultureInfo.InvariantCulture)); //Заданный вектор var v = new PointF(pt2.X - pt1.X, pt2.Y - pt1.Y); //Длина вектора var len = Math.Sqrt(v.X * v.X + v.Y * v.Y); //Вычисляем длину стороны квадрата var side = (float) (len / (4 + Math.Sqrt(2))); //Вершины квадрата PointF[] square = { new PointF(), new PointF(side, 0), new PointF(side, side), new PointF(0, side) }; //Записываем результат using (var writer = new StreamWriter("Outlet.out")) { foreach (var pointF in square) writer.WriteLine( "{0} {1}", pointF.X.ToString("f2", CultureInfo.InvariantCulture), pointF.Y.ToString("f2", CultureInfo.InvariantCulture)); } //Выводим файл на экран Console.WriteLine("Исходные данные (Inlet.in):"); Console.WriteLine(File.ReadAllText("Inlet.in")); Console.WriteLine("Результат (Outlet.out):"); Console.WriteLine(File.ReadAllText("Outlet.out")); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д