Язык: C++.ОС: Ubuntu (Linux)Требуется написать программу, которая выводит текущее время в...

0 голосов

Язык: C++.ОС: Ubuntu (Linux)Требуется написать программу, которая выводит текущее время в десятичном формате в случае, если бы текущее местоположение было на гринвичском меридиане (время, отображающееся на компьютере не обязательно соответствует 0 часовому поясу).Входные данные: отсутствуют.Выходные данные: текущее время в UTC +0 в десятичном формате.


спросил от Одаренный (3.5k баллов) в категории Информатика
оставил комментарий от Начинающий (172 баллов)

Это уже дичь если честно но написать можно, это очень странный формат, тебя тогда интересует не просто десятичный, а к тому же и дробный.

оставил комментарий от Начинающий (172 баллов)

нет, это не time

оставил комментарий от

Посмотрел стандарт ISO 8601, юникс тайм - время без UTC смещения, т.е. на двух машинах в разных частях света в одно время time вернёт одно и то же значение

оставил комментарий от Одаренный (3.5k баллов)

unsigned long long int a = time(0); да, присваивает переменной время юникс тайм в секундах UTC 0. Реализовывал через это. Но слишком давно. Тогда изучать язык только начинал и сама программа получилась достаточно большой и не оптимальной. При этом в данной программе выполнялся и другой функционал, так что там вообще ничего не разобрать. Единственное - в переменных hour, min, sec находились корректные и требуемые значения.

оставил комментарий от Начинающий (172 баллов)

Привет

оставил комментарий от Начинающий (172 баллов)

Ещё раз)_

оставил комментарий от Начинающий (172 баллов)

Я написал, смотри, программа считает кол-во секунд с полночи до текущего момента.

оставил комментарий от Начинающий (172 баллов)

То есть целочисленное значение

оставил комментарий от Начинающий (172 баллов)

Тебе такое надо?

оставил комментарий от Одаренный (3.5k баллов)

Я параллельно тоже с нуля ее сейчас пишу. Нахожусь на этом же этапе выполнения. Требуется число типа double. То есть, например, если время на компьютере UTC +3 - 19:45:00 - в переводе на UTC 0 оно равно 16:45:00. Выводится 16.75.

1 Ответ
0 голосов
ответил от Начинающий (172 баллов)

В ответе я использовал CTIME библиотеку, если возникают вопросы почему именно её, то по нескольким причинам:

  • Самое высокая скорость работы по сравнению с C++ библиотеками, а её функционал полнойстью покрывает нужды.
  • В данном случаи используются достаточно прозрачные с точки зрения нейминга функции. Код будет хорошо читабилен.

К слову об указателе в функции getSecondsSinceUTCMidnight, не нужно беспокоиться об управлении памятью в данном случаи, за тебя это сделает функционал библиотеки.

Спасибо за отметку лучший ответ.

...