Для данных областей составить линейную программу, которая печатает true, если точка с...

0 голосов
322 просмотров

Для данных областей составить линейную программу, которая печатает true, если точка с координатами (х, у) принадлежит закрашенной области, и false — в противном случае


image
image

Информатика (15 баллов) | 322 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

В таких задачах присутствует математическая часть значительного объема. В данном случае нужно "снять" с рисунка координаты вершин треугольника и построить по ним уравнения прямых, представляющих собой стороны треугольника. Затем составляется логическое выражение, описывающее область внутри треугольника (о границах ничего не сказано, поээтому далее считаем, что они в закрашенную область не входят, а если они нужны, неравенства надо сделать нестрогими).
1. Получаем координаты вершин треугольника
A(-5;-3), B(1;4), C(5;-4)
2. Составляем уравнения прямых AB, BC и CA
Общий вид уравнения, проходящего через две точки P и Q:
\displaystyle \frac{x-x_p}{x_q-x_p}= \frac{y-y_p}{y_q-y_p}
Получаем три уравнения прямых:
AB: \quad \displaystyle \frac{x-5}{1+5}= \frac{y+3}{4+3} \to y= \frac{1}{6}(7x+17) \\ BC: \quad \displaystyle \frac{x-1}{5-1}= \frac{y-4}{-4-4} \to y= 6-2x \\ CA: \quad \displaystyle \frac{x-5}{-5-5}= \frac{y+4}{-3+4} \to y= -0.1x-3.5
3. Составляем программу. В данном случае выбран язык системы PascalABC.Net

var
  x,y:real;
begin
  Write('Введите через пробел координаты точки x и y: ');
  Read(x,y);
  Writeln((y<(7*x+17)/6) and (y<6-2*x) and (y>-0.1*x-3.5))
end.

Тестовое решение:
Введите через пробел координаты точки x и y: 2 1.9
True

(142k баллов)