Написать программу, которая выводит календарь (аналог утилиты ncal в UNIX).
Входной текстовый файл формата:
<период> | <формат вывода>
...
Возможные периоды:
month <номер_месяца>
year <год>
range <номер_месяца_1> <номер_года_1> <номер_месяца_2> <номер_года_2>
Возможные форматы вывода (некоторые могут быть указаны совместно):
vert
horiz
year_for_every_month
year_once
Пример входного файла:
range 1 1990 2 1991 | vert year_once
year 1991 | vert year_for_every_month
Написать программу, которая выводит календарь. Предусмотреть следующие режимы:
month
- вывод календаря для заданного месяца (год, месяц).year
- вывод календаря для заданного года (год).range
- вывод календаря для заданного диапазона месяцевПрограмма также должна поддерживать управление форматированием:
vert
) и горизонтальным(horiz
) расположением дней недели (см. примеры ниже).year_for_every_month
) или один раз для всех месяцев, принадлежащих году (year_once
) (см. примеры).Передачу имен файлов реализовать через аргументы командной строки.
Записать результат работы программы в текстовый файл
Сентябрь 2014
Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Сентябрь 2014
Пн 1 8 15 22 29
Вт 2 9 16 23 30
Ср 3 10 17 24
Чт 4 11 18 25
Пт 5 12 19 26
Сб 6 13 20 27
Вс 7 14 21 28
2014
Сентябрь Октябрь Ноябрь Декабрь
Пн 1 8 15 22 29 6 13 20 27 3 10 17 24 1 8 15 22 29
Вт 2 9 16 23 30 7 14 21 28 4 11 18 25 2 9 16 23 30
Ср 3 10 17 24 1 8 15 22 29 5 12 19 26 3 10 17 24 31
Чт 4 11 18 25 2 9 16 23 30 6 13 20 27 4 11 18 25
Пт 5 12 19 26 3 10 17 24 31 7 14 21 28 5 12 19 26
Сб 6 13 20 27 4 11 18 25 1 8 15 22 29 6 13 20 27
Вс 7 14 21 28 5 12 19 26 2 9 16 23 30 7 14 21 28
2015
Январь
Пн 5 12 19 26
Вт 6 13 20 27
Ср 7 14 21 28
Чт 1 8 15 22 29
Пт 2 9 16 23 30
Сб 3 10 17 24 31
Вс 4 11 18 25
Август 2014 Сентябрь 2014 Октябрь 2014
Пн 4 11 18 25 1 8 15 22 29 6 13 20 27
Вт 5 12 19 26 2 9 16 23 30 7 14 21 28
Ср 6 13 20 27 3 10 17 24 1 8 15 22 29
Чт 7 14 21 28 4 11 18 25 2 9 16 23 30
Пт 1 8 15 22 29 5 12 19 26 3 10 17 24 31
Сб 2 9 16 23 30 6 13 20 27 4 11 18 25
Вс 3 10 17 24 31 7 14 21 28 5 12 19 26
Для всех разработанных модулей должны быть созданы наборы unit тестов. Функции ввода/вывода нужно тестировать с помощью std::stringstream
.