В вашей программе есть небольшая ошибка в проверке условия. Давайте рассмотрим, как правильно определить, лежит ли точка с координатами (X) и (Y) на окружности радиуса (R) с центром в начале координат.
Когда точка лежит на окружности, расстояние от начала координат до этой точки равно радиусу (R). Это расстояние можно вычислить по формуле:
[
\sqrt{x^2 + y^2} = R
]
Чтобы избежать работы с вещественными числами и корнями, возведем обе стороны в квадрат:
[
x^2 + y^2 = R^2
]
Таким образом, условие, которое нужно проверить в программе, выглядит следующим образом:
If (sqr(x) + sqr(y)) = sqr(r) then
Вы забыли возвести радиус в квадрат в условии проверки. Ваша строка кода:
If (sqr(x) + sqr(y)) = r
должна быть изменена на:
If (sqr(x) + sqr(y)) = sqr(r) then
Ниже представлена исправленная версия вашей программы:
Program Frankenstein;
var
x, y, r: integer;
Begin
Write('Введите координату X: ');
Readln(x);
Write('Введите координату Y: ');
Readln(y);
Write('Введите длину радиуса R: ');
Readln(r);
If (sqr(x) + sqr(y)) = sqr(r) then
writeln('Точка лежит на окружности!')
Else
writeln('Точка не лежит на окружности!');
End.
Теперь программа корректно проверяет условие и должна работать правильно.