PascalABC.NET Составить программу, которая печатает true, если точка с координатами (х, у) принадлежит заштрихованной области, и false в противном случае. Заранее спасибо.

PascalABC.NET Составить программу, которая печатает true, если точка с координатами (х, у) принадлежит заштрихованной области, и false в противном случае. Заранее спасибо.
Гость
Ответ(ы) на вопрос:
Гость
В таких задачах основное - составить уравнения линий, ограничивающие заданный контур. Уравнение прямой, проходящей через две точки, можно записать в виде [latex]\displaystyle \frac{x-x_A}{x_B-x_A}= \frac{y-y_A}{y_B-y_A} \qquad (1) [/latex] Первая линия (показана красным цветом) проходит через точки A(2;5) и В(5;1). Подставляя значения в (1) получаем [latex]\displaystyle \frac{x-2}{5-2}= \frac{y-5}{1-5} ; \ \frac{x-2}{3}= \frac{y-5}{-4}; \ 8-4x=3y-15; \\ \\ 3y=23-4x \to y= \frac{23-4x}{3}[/latex] Вторая линия (показана синим цветом) проходит через точки В(5;1) и С(2;-4). Подставляя значения в (1) получаем [latex]\displaystyle \frac{x-5}{2-5}= \frac{y-1}{-4-1} ; \ \frac{x-5}{-3}= \frac{y-1}{-5}; \ 25-5x=3-3y; \\ \\ 3y=5x-22 \to y= \frac{5x-22}{3}[/latex] Вторая линия (показана зеленым цветом) имеет уравнение х=2. Границы, а также внутренняя часть контура, составленного этими тремя линиями (треугольник) принадлежат одновременно трем областям, показанным цветными заливками. Каждая область определяется математическим неравенством. Если область лежит выше линии y=F(x), то y≥F(x), а если ниже, то y≤F(x) Тогда для красной области [latex]\displaystyle y\leq F(x); \quad y \leq \frac{23-4x}{3} [/latex] для синей области [latex]\displaystyle y\geq F(x); \quad y \geq \frac{5x-22}{3} [/latex] и для зеленой области х≥2 А контур описывается совокупностью этих трех условий, объединенных логическим "И". [latex]\displaystyle \left(y \leq \frac{23-4x}{3}\right) \land \left(y \geq \frac{5x-22}{3}\right) \land (x \geq 2) \qquad (2)[/latex] Условие (2) является логическим выражением и его значением в программе будет true/false, что и требуется по условию. // PascalABC.NET 3.2, сборка 1379 от 21.01.2017 var   x,y:real; begin   Write('Введите координаты точки: '); Read(x,y);   Writeln((y<=(23-4*x)/3) and (y>=(5*x-22)/3) and (x>=2)) end. Пример Введите координаты точки: 3 2.1 True
Не нашли ответ?
Ответить на вопрос
Похожие вопросы