§ 16. Тип данных структура (struct)
Упражнения
1. Напишите программу, которая преобразует уравнение прямой в отрезках в общее уравнение прямой.
2. Напишите программу, которая преобразует общее уравнение прямой в уравнение прямой с угловым коэффициентом. Предусмотреть проверку случая, когда это сделать невозможно.
3. Напишите программу, которая преобразует уравнение прямой, проходящей через две точки, в уравнение прямой с угловым коэффициентом. Если это невозможно, то получить уравнение в виде .
4. Напишите программу, которая определит взаимное расположение точки с координатами (x0, y0) и прямой .
5. Напишите программу, которая определит взаимное расположение точек с координатами (x1, y1), (x2, y2) и прямой .
6. Напишите программу, которая определит взаимное расположение точки с координатами (x0, y0) и двух параллельных прямых и .
7. Многоугольник задан списком своих вершин в порядке обхода. Для каждой вершины известны ее координаты на плоскости. Найдите длину самой короткой диагонали многоугольника.
8. Многоугольник задан списком своих вершин в порядке обхода. Для каждой вершины известны ее координаты на плоскости. Получите массив прямых, заданных уравнением прямой, проходящей через две точки. Каждая прямая проходит через сторону многоугольника. Преобразуйте каждое уравнение в общее уравнение прямой. Выведите эти уравнения. * Есть ли у многоугольника две разные стороны, лежащие на одной прямой (это может быть у невыпуклого многоугольника)?
9. Для проверки того, что точка (x0, y0) лежит внутри треугольника, заданного вершинами (x1, y1), (x2, y2), (x3, y3), можно воспользоваться следующим алгоритмом:
- Провести прямую через точки (x1, y1), (x2, y2).
- Если точки (x0, y0) и (x3, y3) лежат в разных полуплоскостях относительно этой прямой, то точка (x0, y0) лежит снаружи.
- Если точки (x0, y0) и (x3, y3) лежат в одной полуплоскости, то произвести аналогичные проверки для остальных вершин.
- Если для всех трех прямых точка (x0, y0) и оставшаяся вершина лежат в одной полуплоскости, то точка (x0, y0) внутри треугольника.
Реализовать описанный выше алгоритм.
10*. Написать программу для проверки, лежит ли точка (x0, y0) внутри выпуклого многоугольника.
11. Вводятся два значения времени: часы, минуты, секунды. Сколько секунд прошло между ними? Время указано в пределах одних суток.
12. Вводятся два значения времени: часы, минуты, секунды. Между ними могло пройти более суток (но не более двух суток). Сколько прошло времени между ними? Ответ получить в часах, минутах и секундах.
13. Вводится дата: день, месяц, год. Уменьшить введенную дату на t дней.
14. Дана дата. Вывести, сколько дней до нее осталось (или сколько дней прошло).
15. Вводится дата: месяц, год. Определить день недели. Для определения дня недели можно воспользоваться следующими формулами:
a = (14 − месяц) / 12
y = год − a
m = месяц + 12 * a − 2
ДеньНедели = (день + y + y / 4 − y / 100 + y / 400 + (31 * m) / 12) % 7
Все деления целочисленные. Результат: 0 — воскресенье, 1 — понедельник и т. д
16. Дана дата. Сгенерировать расписание с этой даты на t дней по такому принципу: сутки через трое. Если рабочий день приходится на воскресенье, то он переносится на понедельник. В итоге показать даты рабочих дней.
17*. Дан режим работы интернет-магазина. ПН 9:00 — 21:00, ВТ 9:00 — 21:00, СР 9:00 — 21:00, ЧТ 9:00 — 21:00, ПТ 9:00 — 21:00, СБ 10:00 — 18:00, ВС 10:00 — 18:00. И даны дата и время. Определить, работает ли в это время магазин и сколько минут до конца рабочей смены.