Вычислить площадь полученного треугольника - C#
Формулировка задачи:
Ввести три числа. Если они могут быть длинами сторон разностороннего остроугольного треугольника, вывести их в порядке возрастания, вычислить площадь полученного треугольника.
надо сделать через классы
Решение задачи: «Вычислить площадь полученного треугольника»
textual
Листинг программы
class Triangle
{
private int a;
private int b;
private int c;
public Triangle(int a, int b, int c)
{
Swap(ref a,ref b,ref c);
//проверка если значения могут быть длинами сторон треугольника
if (c > a + b)
throw new Exception("triangle can not be created");
this.A = a;
this.B = b;
this.C = c;
}
#region Properties
public int A
{
get { return this.a;}
private set
{
CheckValue(value);
this.a = value;
}
}
public int B
{
get { return this.b; }
private set
{
CheckValue(value);
this.b = value;
}
}
public int C
{
get { return this.c; }
private set
{
CheckValue(value);
this.c = value;
}
}
#endregion
// Вычисляем площадь по формуле Герона
//p- полупериметр, p=(a+b+c)/2
// S=корень(p(p-a)(p-b)(p-c))
public double GetSquare()
{
double p = (double)this.GetPerimeter() / 2;
return Math.Sqrt(p * (p - this.A) * (p - this.B) * (p - this.C));
}
//вывод сторон порядке возрастания
public override string ToString()
{
return String.Format("a = {0}\nb = {1}\nc = {2}\n", this.A, this.B, this.C);
}
//метод для сортировки сторон порядке возрастания
private void Swap(ref int a, ref int b, ref int c)
{
int[] arr = { a, b, c };
Array.Sort(arr);
a = arr[0];
b = arr[1];
c = arr[2];
}
//метод для проверки значения сторон
private void CheckValue(int value)
{
if (value <= 0)
throw new Exception("Value can not be less than zero");
}
//находим периметр
private int GetPerimeter()
{
return this.A + this.B + this.C;
}
}