§ 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), можно воспользоваться следующим алгоритмом:

    1. Провести прямую через точки (x1, y1), (x2, y2).
    2.  Если точки (x0, y0) и (x3, y3) лежат в разных полуплоскостях относительно этой прямой, то точка (x0, y0) лежит снаружи.
    3. Если точки (x0, y0) и (x3, y3) лежат в одной полуплоскости, то произвести аналогичные проверки для остальных вершин.
    4. Если для всех трех прямых точка (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. И даны дата и время. Определить, работает ли в это время магазин и сколько минут до конца рабочей смены.