protected double a, b, c;
public Triangle(double a, double b, double c)
public void ChangeSideA(double newA)
public void ChangeSideB(double newB)
public void ChangeSideC(double newC)
return Math.Acos((b * b + c * c - a * a) / (2 * b * c)) * 180 / Math.PI;
return Math.Acos((a * a + c * c - b * b) / (2 * a * c)) * 180 / Math.PI;
return Math.Acos((a * a + b * b - c * c) / (2 * a * b)) * 180 / Math.PI;
public double Perimeter()
class Equilateral : Triangle
public Equilateral(double a) : base(a, a, a)
return this.a * this.a * Math.Sqrt(3) / 4;
double a = 0, b = 0, c = 0, d = 0;
while (a + b <= c || a + c <= b || b + c <= d)
Console.Write("Введите длины сторон для треугольника: \na = ");
a = System.Convert.ToDouble(Console.ReadLine());
b = System.Convert.ToDouble(Console.ReadLine());
c = System.Convert.ToDouble(Console.ReadLine());
if (a + b <= c || a + c <= b || b + c <= d)
Console.WriteLine("\nОшибка: Треугольника со сторонами {0}, {1}, {2} не существует. Введите корректные длины сторон.\n", a, b, c);
Console.Write("Введите длину стороны для равностороннего треугольника: \nd = ");
d = System.Convert.ToDouble(Console.ReadLine());
Triangle triangle = new Triangle(a, b, c);
Equilateral equilateral = new Equilateral(d);
Console.WriteLine("\nУгол A = {0} градусов \nУгол B = {1} градусов \nУгол C = {2} градусов \nПериметр равен {3} \n", triangle.AngleA(), triangle.AngleB(), triangle.AngleC(), triangle.Perimeter());
Console.WriteLine("Площадь равностороннего треугольника равна {0}", equilateral.Square());
while (a + b <= c || a + c <= b || b + c <= d)
Console.Write("\nВведите новые длины сторон для треугольника: \na = ");
a = System.Convert.ToDouble(Console.ReadLine());
b = System.Convert.ToDouble(Console.ReadLine());
c = System.Convert.ToDouble(Console.ReadLine());
if (a + b <= c || a + c <= b || b + c <= d)
Console.WriteLine("\nОшибка: Треугольника со сторонами {0}, {1}, {2} не существует. Введите корректные новые длины сторон.\n", a, b, c);
Console.WriteLine("\nУгол A = {0} градусов \nУгол B = {1} градусов \nУгол C = {2} градусов \nПериметр равен {3} \n", triangle.AngleA(), triangle.AngleB(), triangle.AngleC(), triangle.Perimeter());