200 БАЛЛОВ за решение: Даны координаты точки (Х; У). Составить программу(Паскаль),...

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

200 БАЛЛОВ за решение: Даны координаты точки (Х; У). Составить программу(Паскаль), которая печатает true, если точка с координатами (х;у) принадлежит заштрихованной области из задания № 2 вашего варианта, и false в противном случае.
Начало -- var x, y: integer;
f: boolean;
begin .....


image

Информатика (274 баллов) | 82 просмотров
0

if((sqr(x)+sqr(y)>=16) and (sqr(x)+sqr(y) <= 64) and (x*y>=0))если не ошибаюсь это условие должно проверять на принадлежность в заштрихованным частям в I и III четвертях

0

возможно)

Дан 1 ответ
0 голосов
Правильный ответ

Прежде всего, надо построить логическое выражение, которое описывает попадание точки a(x,y) в заштрихованные области.
1. первая четверть
Область образована частью кольца, меньший радиус равен 4, больший - 8.
(x^2+y^2 \geq 4^2) \land (x^2+y^2 \leq 8^2) \land (x \geq 0)\land(y \geq 0)
2. третья четверть
Такая же область.
(x^2+y^2 \geq 4^2) \land (x^2+y^2 \leq 8^2) \land (x \leq 0)\land(y \leq 0)
3. вторая четверть
треугольник, гипотенуза которого имеет уравнение вида y=2x+8
(y\leq 2x+8) \land (x \leq 0) \land (y \geq 0)

В программе эти три области следует объединить по "или".
Можно сделать упрощение, заметив, что выражения для 1-й и 3-й четвертей отличаются лишь противоположными знаками координат, причем обе координаты одного знака, следовательно их произведение неотрицательно:
(x^2+y^2 \geq 4^2) \land (x^2+y^2 \leq 8^2) \land (xy \geq 0)

var
  x, y: real;
  f: boolean;

begin
  Write('Введите координаты точки (x,y): '); Readln(x, y);
  f := ((sqr(x) + sqr(y)) >= 16) and ((sqr(x) + sqr(y)) <= 64) and (x * y >= 0);
  f := f or (y <= 2 * x + 8) and (x <= 0) and (y >= 0);
  Writeln(f)
end.

Тестовое решение:
Введите координаты точки (x,y): 1.57 3.93
True





(142k баллов)
0

Большое спасибо)

0

Пожалуйста