Цель работы - получение навыков работы со структурами данных
1. Реализуйте программу работы со структурой, содержащей запись о координатной точке
2. Реализуйте отображение точки в отдельной функции:
void put_point(Point z){
printf("point %c (%.1f, %.1f)", z.name, z.x, z.y); }
3. Добавьте функцию вычисления декартова расстояния между двумя точками.
float dist (Point z, Point w)
4. Добавьте функцию получения новой точки - середины отрезка между двумя точками. Реализуйте обращение к ней из функции main() для вычисления средней из двух введенных пользователем точек.
5*. Напишите функцию для определения к какой координатной четверти относится точка.
Пояснение к решению
Для решения этой задачи следует использовать функцию localtime(), которая возвращает указатель на структуру типа tm, описанную в time.h, как:
struct tm {
int tm_sec; /* секунды - [0,59] */
int tm_min; /* минуты - [0,59] */
int tm_hour; /* часы - [0,23] */
int tm_mday; /* день - [1,31] */
int tm_mon; /* месяц - [0,11] */
int tm_year; /* год от 1900 */
int tm_wday; /* день недели с воскресенья - [0,6] */
int tm_yday; /* номер дня с 1 января - [0,365] */
int tm_isdst; /* флаг летнего времени устанавливается >0, если <=0, то информация недоступна*/
};
Поскольку typedef отсутствует, то необходимо полное объявление. Так указатель на структуру tm объявляется как:
struct tm *mytime;
В качестве аргумента функции localtime() передается указатель на переменную специального типа time_t, который определен в time.h как long или int в зависимости от системы.
time_t t;
Значение переменной t может быть получено функцией time(), которая возвращает текущее календарное время системы. Функцию time() можно вызывать либо с нулевым указателем:
t = time(NULL);
либо с указателем на переменную типа time_t:
time(&t);
В таком случае по адресу переменной, указатель на которую передан в функцию будет размещено календарное время значением типа time_t.
Поэтому последовательность шагов получения текущего времени следующая:
Шаг 1. Объявление служебных переменных:
struct tm *mytime;// указатель на структуру tm
time_t t;/*переменная типа time_t для значения системного времени*/
Шаг 2. Получение системного времени:
t = time(NULL);
Шаг 3. Трансформация его в структуру tm:
mytime= localtime(&t);
Шаг 4. Использование полученных значений для печати на экран:
printf("Московское время %02d:%02d:%02d \n",
mytime ->tm_hour, mytime ->tm_min, mytime ->tm_sec);
1. День недели (словами)
2. День, месяц и год через разделитель
3. День (цифра) и месяц (слово)
4. «сегодня N-й день k года»
5. «до воскресенья k дней и m часов»
6. «с первой пары прошло k часов m минут»
7. «до Нового года осталось m месяцев и k дней»
8. «до конца пары m минут и s секунд»
9. «до конца месяца d дней, до конца года m месяцев»
10. Месяц (римская цифра) и год (число)
11. Время года и две последние цифры года
12. «идет k день зимы/осени»
Для формирования строки используйте функцию sprintf().