Найти площадь многоугольника, вершины которого при некотором обходе имеют заданные координаты - C#
Формулировка задачи:
namespace ConsoleApplication53 { class Program { static int[,] Input() { Console.Write("Введите количество вершин: "); int n = int.Parse(Console.ReadLine()); var coord = new int[2, n]; Console.WriteLine("***Кординаты вершины вводить через пробел***"); for (int i = 0; i < n; i++) { Console.Write("Введите координаты вершины {0}: ", i + 1); var input = Console.ReadLine().Split(' '); coord[0, i] = int.Parse(input[0]); coord[1, i] = int.Parse(input[1]); } return coord; } static double Area(int[,] coord) { int x1,x2,x3,y1,y2,y3; double p, a, b, c, s; x1=coord[0,0]; y1 = coord[0, 1]; for (int i = 0; i < coord.GetLength(1)-1; i++) { x2=coord[i,0]; y2 = coord[0, i]; x3 = coord[i, 0]; y3 = coord[0, i]; a=Math.Sqrt(((x3-x2)*(x3-x2))+((y3-y2)*(y3-y2))); b=Math.Sqrt(((x3-x1)*(x3-x1))+((y3-y1)*(y3-y1))); c=Math.Sqrt(((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))); p = (a + b + c) / 2; } return s += Math.Sqrt(p * (p - a) * (p - b) * (p - c)); } static void Main(string[] args) { int[,] coord = Input(); var area = Area(coord); Console.WriteLine("Площадь многоугольника равна {0}", area); Console.ReadKey(); } } }
Решение задачи: «Найти площадь многоугольника, вершины которого при некотором обходе имеют заданные координаты»
textual
Листинг программы
static double Area(int[,] coord) { int x1, x2, x3, y1, y2, y3; double p, a, b, c, s=0; x1 = coord[0, 0]; y1 = coord[1, 0]; for (int i = 1; i < coord.GetLength(1) - 1; i++) { x2 = coord[0, i]; y2 = coord[1, i]; x3 = coord[0, i+1]; y3 = coord[1, i+1]; a = Math.Sqrt(((x3 - x2) * (x3 - x2)) + ((y3 - y2) * (y3 - y2))); b = Math.Sqrt(((x3 - x1) * (x3 - x1)) + ((y3 - y1) * (y3 - y1))); c = Math.Sqrt(((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1))); p = (a + b + c) / 2; s += Math.Sqrt(p * (p - a) * (p - b) * (p - c)); } return s; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д