Регистрация
Войти
Стать экспертом Правила
Информатика

Умоляю помогите СРОЧНО РЕШИТЬ 4, 5, 6.
Составить программу, которая печатает true, если точка с координатами (х, у) принадлежит заштрихованной области, и false в противном случае.

ОТВЕТЫ
Во вложении - раскрашенная для пояснения решения картинка.

   Главное в таких задачах - правильно составить условие попадания в заштрихованную область, а затем построить по нему корректное логическое выражение.

   Не совсем корректная постановка задачи требует сделать одно допущение. Нам не указали, входят ли в заштрихованные области их границы. Будем считать, что входят и на этом основании все отношения будет нестрогими (т.е.составленными при помощи ≤ и ≥). Если  границы контуров входить не должны, отношения строятся строгими и содержат операции lt; и gt;.

   Первое, с чего нужно начать - составить уравнения линий, описывающих контуры. Это чистая математика и разбирать тут процесс нахождения уравнений таких линий смысла я не вижу.

   Далее, нужно руководствоваться очевидным: если нужная нам область лежит "выше" или на линии контура, описанного уравнением вида y=f(x), то такая область описывается в виде y ≥ f(x). Аналогично, область расположенная "ниже" или на  линии такого контура описывается в виде y ≤ f(x)

   Задание 4
"Желтая" область y≤x+3, "зеленая" y≥x-3, "красная" y≥5-x, "голубая" y≤11-x.
Все эти четыре условия должны выполняться одновременно, поэтому их связываем логическим "И" (конъюнкцией):
(y≤x+3) ∧ (y≥x-3) ∧ (y≥5-x) ∧ (y≤11-x)
Соответственно, в языке программирования (далее рассматриваем паскаль) это логическое выражение запишется в виде
(ylt;=x+3) and (ygt;=x-3) and (ygt;=5-x) and (ylt;=11-x)

   Задание 5
Здесь два круговых сектора, расположенных в I и IV координатных четвертях. Уравнение окружности в декартовых координатах хорошо известно: x²+y²=R², где К - радиус окружности.
I четверть образуется пересечением "желтой" и "голубой" зон, т.е.
(x≥0) ∧ (y≥0). И в этой четверти располагается сектор с уравнением
x²+y²=4² ⇒ x²+y²=16. В итоге получаем (x≥0) ∧ (y≥0) ∧ (x²+y²≤16)
Аналогично в IV-й, "желто-зеленой" четверти пишем
(x≥0) ∧ (y≤0) ∧ (x²+y²≤25). Осталось объединить эти области по ИЛИ", т.е. точка может попадать или в одну область, или в другую, но не в обе одновременно.
((x≥0) ∧ (y≥0) ∧ (x²+y²≤16)) ∨ ((x≥0) ∧ (y≤0) ∧ (x²+y²≤25))
Тут можно сделать небольшое упрощение, вынеся за скобки (x≥0).
(x≥0) ∧ (((y≥0) ∧ (x²+y²≤16)) ∨ ((y≤0) ∧ (x²+y²≤25))).
Вспоминаем, что операция ∧ "старше" чем ∨ и это позволяет избавиться от лишней пары скобок.
(x≥0) ∧ ((y≥0) ∧ (x²+y²≤16) ∨ (y≤0) ∧ (x²+y²≤25))
На паскале:
(xgt;=0) and ((ygt;=0) and (x*x+y*ylt;=16) or (ylt;=0) and (x*x+y*ylt;=25))

   Задание 6
Здесь сложный контур, который мы можем разбить на два прямоугольника и свести задачу к аналогичной предыдущей.
"Желтый" прямоугольник описывается набором условий
(x≥-2) ∧ (x≤3) ∧ (y≥2) ∧ (y≤5)
Зеленый прямоугольник
(x≥3) ∧ (x≤5) ∧ (y≥2) ∧ (y≤3)
И здесь следует объединение по "ИЛИ":
((x≥-2) ∧ (x≤3) ∧ (y≥2) ∧ (y≤5)) ∨ ((x≥3) ∧ (x≤5) ∧ (y≥2) ∧ (y≤3))
Можно вынести за скобки y≥2
(y≥2) ∧ ((x≥-2) ∧ (x≤3) ∧ (y≤5) ∨ (x≥3) ∧ (x≤5) ∧ (y≤3))
И на паскале:
(ygt;=2) and ((xgt;=-2) and (xlt;=3) and (ylt;=5) or (xgt;=3) and (xlt;=5) and (ylt;=3))

Только теперь можно написать программу - все остальное, по сути, к информатике отношения не имело и это как раз одна из причин по которой информатика оказывается в школе одним из самых сложных предметов: при решении задач приходится привлекать самые разные знания из других предметов - математики, физики, экономики и т.д.

Программа для задания 4
var
  x,y:real;
begin
  Write(Введите через пробел координаты точки (x,y): );
  Read(x,y);
  Writeln((ylt;=x+3) and (ygt;=x-3) and (ygt;=5-x) and (ylt;=11-x))
end.

Пример программы
Введите через пробел координаты точки (x,y): 3.1 3.4
True

Остальные две программы пишутся совершенно аналогично: вставляем логическое выражение, составленное для паскаля, в процедуру Writeln():

Для задания 5:
Writeln((xgt;=0) and ((ygt;=0) and (x*x+y*xlt;=16) or (ylt;=0) and (x*x+y*ylt;=25)))

Для задания 6:
Writeln((ygt;=2) and ((xgt;=-2) and (xlt;=3) and (ylt;=5) or (xgt;=3) and (xlt;=5) and (ylt;=3)))
200
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам