Условие задачи (17.4)
Условие
Принадлежит ли точка [latex](x;y)[/latex] фигуре на рисунке? Пожалуйста повторите в своём отчёте рисунок, выполнив его в формате SVG.
Тесты
x | y | Ответ |
4 | 3 | yes |
1 | 4 | yes |
2 | 2 | no |
6 | 2 | no |
-1 | 0 | no |
Решение
Точки, которые принадлежат ромбу, находятся между линиями, которые создают этот ромб.
Можно заметить, что эти сумма координат этих точек находится в сегменте между [latex]5[/latex] и [latex]11[/latex]:
- [latex]5\leq x+y\leq 11[/latex];
Их разность в сегменте от [latex]-3[/latex] до [latex]3[/latex]:
- [latex]-3\leq x-y\leq 3[/latex];
Если сумма или разность данных координат больше или меньше заданых чисел, то точка не принадлежит ромбу.
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <iostream> using namespace std; int main() { double x, y; cin >> x >> y; if ((x+y>=5 && x+y<=11 && x-y>=-3 && x-y<=3)) { cout <<"yes"; } else { cout << "no"; } return 0; } |
Код на IDEONE
— Мне даже жаль Вас огорчать, но всё, что Вы писали про большой квадрат который охватывает маленький ромб абсолютно излишне. И внешний условный оператор, который проверяет принадлежность охватывающему квадрату тоже не нужен. Внутренняя проверка сама всё великолепно определяет и совершенно правильно Вами описана. Просто удалите внешний условный оператор и убедитесь, что программа продолжает правильно работать.
— Рисунок должен быть в формате SVG. Вам просто нужно в образце SVG-файла в команде path указать четыре точки — координаты углов ромба.
— В ключевых словах укажите не просто фигуру, а ромб (или точнее квадрат). Кстати, Вы ведь знаете, что квадрат это ромб с прямыми углами? И неважно под каким углом к сторонам экрана его рисовать.
Спасибо, я исправила. Не могла загрузить svg раньше, а сейчас получилось.
Программа работает, но нужно учесть замечания.
— А зачем на рисунке Вы убрали стрелочки у осей координат? В образце я их так старательно рисовал…
— Про ключевые слова я не очень чётко объяснил. Вместо » Принадлежность точки фигуре» следует написать » Принадлежность точки ромбу» или » Принадлежность точки квадрату».
— Сделайте, пожалуйста, правильные отступы. Если один оператор вложен в другой (является его составной частью), то нужно делать дополнительный отступ вправо.
Не заметила, что удалила стрелочки. Спасибо, исправила.
Отлично. Зачтено.