Найти площадь многоугольника, вершины которого при некотором обходе имеют заданные координаты - 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;
}