Компактная упаковка даты
Задана дата в виде ЧЧ ММ ГГ, (Да, три числа через пробел!) где ЧЧ - число, ММ-месяц, ГГ-две последние цифры года, например, 17 09 21. Требуется упаковать эту дату в 2 байта. Для кодирования числа (1 - 31) достаточно 5 бит, месяца (1-12) 4 бит, для двух последних цифр года (00-99) достаточно 7 бит. В итоге получится 16 бит или 2 байта.
Используя битовые операции написать следующие функции:
функция перевода даты заданной в формате ЧЧ ММ ГГ (через пробел) в компактный вид
функция перевода из компактного вида в указанный выше формат.
функция печати битового представления даты в компактном виде.
отдельные функции для изменения даты, изменения месяца, изменения года.
отдельные функции для вывода только даты, только месяца, только года, причем год выводить в формате 20XX, если XX =50.
Работа программы должна быть устроена следующим образом:
После запуска программа считывает дату в указанном выше формате, производит упаковку в компактный формат.
После этого программа попадает в цикл, в котором запрашивает число от 0 до 7, при этом:
если введен 0, то программа должна распечать дату в формате ЧЧ ММ ГГ, используя сохраненный ранее компактный формат,
если введена 1, то программа печатает только дату,
если введена 2, то программа печатает только месяц,
если введена 3, то программа печатает только год в предложенном выше формате,
если введена 4, то программа изменяет дату,
если введена 5, то программа изменяет месяц,
если введена 6, то программа изменяет год,
если введена 7, то программа выдает бинарное представление компактного формата,
если введен любой другой символ отличный от чисел 0 - 7, то программа выходит из цикла и завершает работу,
если введены числа 4, 5 или 6, то программа считывает дополнительное число, соответствующее новому дню, месяцу или году.
Программа должна обладать дружественным интерфейсом, т.е.
сразу после запуска программа должна выдавать сообщение, которое предлагает ввод даты в заданном формате,
после этого программа, должна выводить подсказку, предлагающую ввести числа от 0 до 7 с краткой расшифровкой значений этих чисел,
выводить сообщения в случае любых нештатных ситуаций.