Вводится натуральное число. определить, является ли оно полным квадратом.pascal

Поляков Евгений Александрович

Учитель информатики высшей категории

Проверено учителем

Для решения этой задачи на языке Pascal наиболее эффективным и понятным способом является использование функции извлечения квадратного корня sqrt с последующей проверкой, является ли результат целым числом. Ниже представлен полный код программы с комментариями. Код программы (Free Pascal / Delphi) pascal

program CheckPerfectSquare; var n: LongInt; { Введенное число } root: Real; { Квадратный корень из числа } begin write('Введите натуральное число: '); readln(n); if n < 0 then writeln('Число не является натуральным.') else begin { Вычисляем корень } root := sqrt(n); { Проверяем, равен ли квадрат округленного корня исходному числу } if sqr(round(root)) = n then writeln('Число ', n, ' является полным квадратом (', round(root), '^2).') else writeln('Число ', n, ' не является полным квадратом.'); end; end. 
Use code with caution.Разбор логики работы

  1. Тип данных: Используется LongInt для переменной n, чтобы программа могла обрабатывать достаточно большие числа (до 21092 center dot 10 to the nineth power). Функция sqrt(n): Возвращает вещественное значение (тип Real). Например, для числа 25 она вернет 5.0, а для 26 — 5.099.... Функция round(root): Округляет вещественное число до ближайшего целого. Это критически важный шаг, так как из-за особенностей хранения чисел с плавающей точкой результат sqrt может быть не идеально точным (например, 4.99999999). Проверка sqr(...) = n: Мы возводим полученное целое число обратно в квадрат. Если результат совпал с исходным числом n, значит, n — полный квадрат.

Альтернативный метод (без round) Можно проверить разность между числом и его целой частью: pascal

if frac(sqrt(n)) = 0 then writeln('Это полный квадрат'); 
Use code with caution.Однако первый способ через возведение в квадрат (sqr) считается более надежным в программировании из-за возможных погрешностей типа Real. Я могу переписать этот алгоритм без использования встроенной функции sqrt, если вам требуется реализовать проверку через цикл для учебных целей. Хотите взглянуть на такой вариант?

Форма ответа

Ваш аватар