Как найти корень на языке программирования C#? Например: Console.WriteLine("Пожалуйста введите сторону ab треугольника abc"); int ab = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Пожалуйста введите сторону bc треугольника abc"); int bc = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Пожалуйста введите сторону ac треугольника abc"); int ac = Convert.ToInt32(Console.ReadLine()); double P = ab + bc + ac; Console.WriteLine($"Периметр треугольника равен {P}"); double Polu = (ab + bc + ac) / 2; Console.WriteLine($"Полупериметр равен {Polu}"); double Poluab = Polu - ab; double Polubc = Polu - bc; double Poluac = Polu - ac; double Poluall = //здесь надо найти корень! ((Poluab) * (Polubc) * (Poluac));
Ответы на вопрос
Для вычисления квадратного корня в C# используется метод Math.Sqrt().
В вашем случае, судя по формуле Герона, необходимо найти площадь треугольника:
где p — полупериметр, а a, b, c — стороны треугольника.
Поэтому вычисление должно выглядеть так:
C#double area = Math.Sqrt(Polu * Poluab * Polubc * Poluac);
В исходном коде есть ещё одна важная проблема:
C#double Polu = (ab + bc + ac) / 2;
Переменные ab, bc и ac имеют тип int, поэтому деление выполняется как целочисленное. Например, если сумма сторон равна 15, результатом деления будет 7, а не 7.5. После этого число 7 просто преобразуется в double.
Чтобы получить правильный результат, нужно делить на 2.0:
C#double Polu = (ab + bc + ac) / 2.0;
Полный исправленный вариант программы:
C#Console.WriteLine("Пожалуйста, введите сторону ab треугольника abc:"); double ab = Convert.ToDouble(Console.ReadLine());Console.WriteLine("Пожалуйста, введите сторону bc треугольника abc:"); double bc = Convert.ToDouble(Console.ReadLine());Console.WriteLine("Пожалуйста, введите сторону ac треугольника abc:"); double ac = Convert.ToDouble(Console.ReadLine());double perimeter = ab + bc + ac;Console.WriteLine($"Периметр треугольника равен {perimeter}");double semiPerimeter = perimeter / 2.0;Console.WriteLine($"Полупериметр равен {semiPerimeter}");double semiMinusAb = semiPerimeter - ab; double semiMinusBc = semiPerimeter - bc; double semiMinusAc = semiPerimeter - ac;double area = Math.Sqrt( semiPerimeter * semiMinusAb * semiMinusBc * semiMinusAc );Console.WriteLine($"Площадь треугольника равна {area}");
Лучше использовать double, а не int, поскольку стороны треугольника могут быть дробными.
Также перед вычислением площади желательно проверить, существует ли треугольник с введёнными сторонами. Для этого сумма любых двух сторон должна быть больше третьей:
C#if (ab + bc > ac && ab + ac > bc && bc + ac > ab) { double perimeter = ab + bc + ac; double semiPerimeter = perimeter / 2.0;double area = Math.Sqrt( semiPerimeter * (semiPerimeter - ab) * (semiPerimeter - bc) * (semiPerimeter - ac) );
Console.WriteLine($"Периметр треугольника равен {perimeter}"); Console.WriteLine($"Полупериметр равен {semiPerimeter}"); Console.WriteLine($"Площадь треугольника равна {area:F2}"); } else { Console.WriteLine("Треугольник с такими сторонами не существует."); }
Запись {area:F2} означает, что результат будет выведен с двумя цифрами после запятой.
Например, для сторон 3, 4 и 5 программа получит:
Периметр треугольника равен 12 Полупериметр равен 6 Площадь треугольника равна 6,00
Главная строка для нахождения корня:
C#double result = Math.Sqrt(number);
При этом number не должно быть отрицательным, иначе результатом будет специальное значение NaN, означающее, что корректное вещественное число получить невозможно.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

