1. В этой строке
(a + b + c) / 2
Будет происходить целочисленное деление, тк сумма a+b+c и 2 имеют тип int.
Чтобы это исправить, тебе надо написать так:
(a+b+c)/2.00
Значение 2.00 имеет тип double и тогда деление пройдёт как ожидается.
2. При значениях 9 9 19 будет браться корень отрицательного числа (даже если исправить первую проблему), а так как double - это не комплексное число, то и значение такое оно представить не может.
3. А почему 0 у тебя получается в первом случае - хз. Запускал в консоли и у меня получилось 55.31
Мой код
// Запускал в roslynpad. Тебе возможно придётся убрать вызовы Dump и добавить юзинги
var result1 = CalcualteAreaOfTriangle(11,11,12).Dump("result 1");
var result2 = CalcualteAreaOfTriangle(9,9,19).Dump("result 2");
static double CalcualteAreaOfTriangle(int a, int b, int c)
{
var p = (a + b + c) / 2.00;
p.Dump("p");
var s1 = Math.Sqrt((p * (p - a) * (p - b) * (p - c)).Dump("pre sqrt"));
var s2 = 0.5 * a * b;
if (s1 == s2)
{ // Кстати это почти никогда не будет срабатывать из-за IEEE754
Console.WriteLine("Треугольник прямоугольный");//а точно ли?
}
return s1;
}
PS:
button1, a, b, c, s1, s2, label4, label5, Form1, textBox1, textBox2, textBox3, button1, p
Осуждаю такое именование.