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();
}
}