Другие языки программирования и технологии

помогите исправить ошибку в программе в Pascal

Составить программу, которая печатает true, если точка с координатами (x, y) принадлежит закрашенной области, и false в противном случае.
вот вариант решения. но он не верен, где-то есть ошибка
Решение:
var
x,y:integer;
L: Boolean;
begin
Writeln('x,y');
Readln(x,y);
L:=(X>=2)and(x<=4)and(y>=2)and(y<=4)and(y>=2-x)and(y<=4-x)or (x<=-2)and(x>=-4)and(y>=2)and(y<=4)and(y>=x+2)and(y<=x+4)Or (x<=-2)and(x>=-4)and(y<=-2)and(y>=-4)and(y<=-x-2)and(y>=-x-4) ;
Writeln(L);
end.
Конечно, ошибка, ведь ты не сопоставляешь каждому значению х его должный диапазон у.
Сначала напиши по-людски все условия. Например, при x>0 => y1= -x+4, y2=-x+2 (это уравнения прямых, для любого х считаем диапазон должных значений у), при этом y должно быть меньше-равно у1 и больше-равно у2.
При x<=0 по уравнениям прямых так же считаем у1, у2, у3 и у4. Проверяем попадание у в должные диапазоны. ВСЁ!
Если не проходили уравнения прямых, то самое время про это почитать. Верхняя прямая первого квадранта описывается уравнением у1(х) = -х+4, нижняя у2(х) =-х+2. Осталось выписать уравнения остальных прямых.
Вероника Зеленко
Вероника Зеленко
48 067
Лучший ответ
Подели свое условие на несколько более простых - сразу станет как-то легче. А то тут черт ногу сломит.
А вы закрашенную область предъявите народу, тогда будем посмотреть.
Сергей Маслов
Сергей Маслов
95 784
Медет Балгожин в дополнении рисунок
Тань, Вам все объяснили выше. Еще раз, более подробно:
1) Берем точку, определяем, к какой части координатной плоскости, она относится.
2) Берем X для нашей точки. С таким X есть точка на верхней прямой, и точка на нижней прямой, считаем для них: Y1 для верхней прямой, и Y2 для нижней прямой. Считаем по уравнениям прямых, они у Вас есть.
3) Если у нашей точки, координата Y лежит между Y1, и Y2, то точка принадлежит области.

И не повторяйте тупо "я это не знаю", а берите учебник геометрии и ищите, там нет ничего сложного.
Айбек Бонд
Айбек Бонд
48 987