Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Составить алгоритм для нахождения площади треугольника по заданным координатам его вершин.

Александр Филиппов Ученик (147), на голосовании 1 месяц назад
Голосование за лучший ответ
Рустам Абдрашитов Мудрец (14307) 2 месяца назад
C#
 using System; 

public class Triangle
{
private static double GetValidCoordinate(string p)
{
double c;
while (true)
{
Console.Write(p);
if (double.TryParse(Console.ReadLine(), out c))
{
return c;
}
Console.WriteLine("Ошибка! Введите корректное числовое значение.");
}
}

public static double CalculateArea(double a, double b, double c, double d, double e, double f)
{
double s = 0.5 * Math.Abs(
a * (d - f) +
c * (f - b) +
e * (b - d)
);

return Math.Round(s, 2);
}

public static double CalculatePerimeter(double a, double b, double c, double d, double e, double f)
{
double s = Math.Sqrt(Math.Pow(c - a, 2) + Math.Pow(d - b, 2));
double t = Math.Sqrt(Math.Pow(e - c, 2) + Math.Pow(f - d, 2));
double u = Math.Sqrt(Math.Pow(a - e, 2) + Math.Pow(b - f, 2));

return Math.Round(s + t + u, 2);
}

public static bool IsValidTriangle(double a, double b, double c, double d, double e, double f)
{
double s = CalculateArea(a, b, c, d, e, f);
return s > 0;
}

static void Main(string[] args)
{
while (true)
{
Console.WriteLine("\n=== Калькулятор треугольника ===");
Console.WriteLine("Введите координаты вершин треугольника:");

double a = GetValidCoordinate("Введите x1: ");
double b = GetValidCoordinate("Введите y1: ");
double c = GetValidCoordinate("Введите x2: ");
double d = GetValidCoordinate("Введите y2: ");
double e = GetValidCoordinate("Введите x3: ");
double f = GetValidCoordinate("Введите y3: ");

if (!IsValidTriangle(a, b, c, d, e, f))
{
Console.WriteLine("\nОШИБКА: Точки лежат на одной прямой или совпадают. Это не треугольник!");
}
else
{
double s = CalculateArea(a, b, c, d, e, f);
double p = CalculatePerimeter(a, b, c, d, e, f);

Console.WriteLine("\nРезультаты:");
Console.WriteLine($"Площадь треугольника: {s} кв. ед.");
Console.WriteLine($"Периметр треугольника: {p} ед.");
}

Console.Write("\nХотите посчитать еще один треугольник? (да/нет): ");
string r = Console.ReadLine().ToLower();
if (r != "да" && r != "y" && r != "yes")
{
break;
}
Console.Clear();
}

Console.WriteLine("\nСпасибо за использование программы!");
Console.WriteLine("Нажмите любую клавишу для выхода...");
Console.ReadKey();
}
}
нет войне Мастер (2290) 2 месяца назад
По программированию не подскажу. Подскажу лишь математическую сторону вопроса: готовая формула площади треугольника по координатам его вершин: S=¹/₂|х₂у₃+x₃у₁-х₁у₃-х₂у₁-х₃у₂-х₁у₂|. А вот один из способов её вывода по классической формуле площади треугольника как произведение половины основания на высоту:
1) Найти длину любой стороны треугольника по координатам её концов по теореме Пифагора
2) Составить уравнение этой стороны по координатам её концов (уравнение прямой по двум точкам)
3) Найти расстояние от противолежащей вершины треугольника до этой стороны по формуле расстояния от точки до прямой
4) Половина произведения результатов первого и третьего действий
Похожие вопросы