Попадание точки в область - Free Pascal
Формулировка задачи:
Даны действительные числа x, a, b.Определите, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости (с контролем ввода по переменной b).
Нужна помощь.Вроде бы написал программу, но постоянно выходит значение "точка не принадлежит", уже голову сломал, где ошибка.
program azaza;
label 10;
var b,x,y:real;begin
{Ввод переменной b с контролем}
10:writeln('Введите b');
readln(b);
if (b<=0) then begin writeln('Некоректное значение b,повторите ввод');goto 10;end;
{Ввод переменных x,y - координаты точки}
writeln ('Введите x,y');
readln(x,y);
{Проверка на принадлежность точки заштрихованной области}
If (sqr(x)+sqr(y)<=sqr(b)) and (y>=x+(b/2)) and (y>=(b/2)-x) and (y<=-x-(b/2)) then writeln ('tochka ne prinadlejit') else writeln ('tochka prinadlejit');
readln;
end.Решение задачи: «Попадание точки в область»
textual
Листинг программы
program azaza;
var a,b,x,y:real;
begin
{Ввод переменных a,b с контролем a=B b=b}
repeat
write('Введите b>0 b=');
readln(b);
until b>0;
repeat
write('Введите B>=b B=');
readln(a);
until a>=b;
{Ввод переменных x,y - координаты точки}
writeln ('Введите x,y');
readln(x,y);
{Проверка на принадлежность точки заштрихованной области}
If (sqr(x)+sqr(y)<=sqr(a)) and (abs(y)+abs(x)>=b) then
writeln ('tochka prinadlejit') else writeln ('tochka ne prinadlejit');
readln;
end.
Объяснение кода листинга программы
- Объявлены четыре переменные: a, b, x, y (строки 6-9)
- Пользователю предлагается ввести значение переменной b,
- пока b не будет больше 0 (строка 12-20)
- Затем пользователю предлагается ввести значение переменной a,
- пока a не будет больше или равно b (строка 12-20)
- Пользователю предлагается ввести координаты точки (строка 24)
- Происходит проверка принадлежности точки заштрихованной области,
- вычисляется квадрат расстояния от точки до вертикальной оси (по x),
- вычисляется квадрат расстояния от точки до горизонтальной оси (по y),
- вычисляется квадрат расстояния от точки до линии b=a (по x и y),
- сравниваются полученные значения с квадратом расстояния от точки до линии b=a,
- если условие выполняется, выводится сообщение
tochka prinadlejit, иначе выводится сообщениеtochka ne prinadlejit(строки 28-37)
- Программа ожидает ввода с клавиатуры, чтобы пользователь мог увидеть результат (строка 40)