Задача на геометрическое построение - 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"));
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д