Вопрос задан 29.07.2026 в 09:10. Предмет Информатика. Спрашивает Филимонов Алексей.

Как найти корень на языке программирования 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().

В вашем случае, судя по формуле Герона, необходимо найти площадь треугольника:

S=p(pa)(pb)(pc)S = \sqrt{p(p-a)(p-b)(p-c)}

где 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, означающее, что корректное вещественное число получить невозможно.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос