|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
Написать программу, позволяющую получить календарь любого года, месяца01.04.2013, 17:40. Показов 4268. Ответов 22
Метки нет (Все метки)
Помогите написать программу:
Написать программу, позволяющую получить календарь любого года, месяца в предположительных пределах 1900-2050 гг. с указанием дня недели, соответствующего данному числу данного месяца.
0
|
|
| 01.04.2013, 17:40 | |
|
Ответы с готовыми решениями:
22
Напечатайте календарь заданного месяца 2005 года, зная, что 1 января 2005 года — суббота
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 01.04.2013, 21:07 | |
|
О, это супер! Календарь - обожаю, только подзабыл теорию. Это и в уме люди считают. Нужно знать день, на который выпадает первое января, и сдвиги месяцев относительно января. Поскольку
0
|
|
|
0 / 0 / 0
Регистрация: 12.03.2013
Сообщений: 130
|
|
| 01.04.2013, 22:06 | |
|
Это же элементарно Ватсон xD
0
|
|
|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
| 01.04.2013, 22:10 [ТС] | |
|
kleoim, ну напиши раз так легко
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 01.04.2013, 22:18 | |
|
Не, mikl25, лично я буду календарь обсуждать только если сами будете писать. Я уже даже книжку нашёл.
0
|
|
|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
| 01.04.2013, 22:48 [ТС] | |
|
helter, как книга называется?
Добавлено через 27 минут Эта книга только платная же.
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 01.04.2013, 22:49 | |
|
Сергей Куликов. Нить времён. Малая энциклопедия календаря. У меня бумажная, но сканера нет. :P
С юлианским проблем вообще нет, там просто каждый четвёртый год високосный, поэтому каждый невисокосный год сдвигает день на единицу, а високосный - на два. Соответственно, получается простая формула, действующая для любого года нашей эры: Д = | (Г + Ч + М)/7 | = | (J + [J/4] + Ч + М)/7 | где Д - день недели Г - "годовой член" или "солнечная эпакта" (показывает сдвиг дней недели года относительно фиксированного года), Ч - число месяца М - "месячный член" (сдвиг дней в конкретном месяце относительно фиксированного дня в году) J - номер года в нашей эре [] - целая часть || - остаток от деления Пример: дата рождения Пушкина по старому стилю - 26 мая 1799 года, это день недели | (1799 + 499 + 26 + 5)/7 | = 4 (четверг) Насчёт нового стиля здесь какие-то таблицы; мне кажется, проще делать поправку от юлианского.
0
|
|
|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
| 01.04.2013, 22:55 [ТС] | |
|
helter, "Насчёт нового стиля здесь какие-то таблицы; мне кажется, проще делать поправку от юлианского."- согласен
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 01.04.2013, 22:58 | |
|
Вся эта арифметика - только запутаешься.
Григорианский чем, значиццо, отличается: не считаются високосными вековые годы, в которых число сотен не делится на 4.В XX--XXI годах поправка одна - 13 дней, так что вам можно было бы не заморачиваться. Однако если легко можно сделать на все века, почему нет?
0
|
|
|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
| 01.04.2013, 23:02 [ТС] | |
|
Мне это по учебе, нужно каким либо образом реализовать, слишком сложную не надо и простым способом пойдет
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||
| 02.04.2013, 02:36 | ||||||
|
Да это просто арифметика. И программировать особо не надо, трудность в математику уходит.
Давайте вместе писать, потом сравним. У меня для старого стиля работает, для нового пока сбоит. Месячные члены: 4 (3) 0 (6 = -1) 0 3 5 1 3 6 2 4 0 2 В скобках - январь и февраль високосного года. Юлианский и григорианский календари совпадают с 1 марта 200 года по 29 февраля 300 года. По идее этих данных хватает. У меня глючит на 1900 году (если верить нагугленному календарю). У Куликова ещё написано, что для григорианского в вековых годах (вида dd00) нужно для января и февраля считать поправки как для високосного, даже если они нет. Я это ещё не осознал, но видимо, это действительно так. Добавлено через 3 минуты Для тестов старого стиля: 26.05.1799 - четверг 9.01.1905 - воскресенье 9.01.1904 - пятница 28.06.1175 - суббота (убит князь Андрей Суздальский, в летописи день недели отмечен) Добавлено через 5 минут А, это за счёт того, что разница только с первого марта увеличивается на день. Всё, мне всё понятно, и у меня всё работает. Можете вопросы задавать. ![]() Добавлено через 6 минут А не, ни фига. Что-то я запутался, надо уже до завтра оставлять.Добавлено через 1 час 1 минуту Всё, у меня заработало. Вместо конверсии туда-сюда проще посчитать сразу в григорианском, вычислив число високосных годов с начала эры до данного года. Месячные члены можно и такие использовать: 1(0) 4(3) 4 0 2 5 0 3 6 1 4 6 То есть если 1 января невисокосного года - понедельник, то первое марта будет четверг и т. п. Это сдвинутая последовательность по отношению к той, которую я раньше выписывал. Восемнадцать строчек кода вместе с двумя пустыми, дерзайте. ![]() Добавлено через 50 минут Бонус! Предположим, что день недели вычисляет функция day. Предлагаю вашему вниманию следующую функцию:
0
|
||||||
|
Супер-модератор
|
||||||
| 02.04.2013, 11:02 | ||||||
|
Вот, как вариант (для 20-21-го веков, вроде бы работает):
1
|
||||||
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|||||||||||
| 02.04.2013, 21:17 | |||||||||||
|
Кстати, у меня баг: 29 февраля не отображается. Лучше использовать функцию для вычисления дней в данном месяце данного года. Мне ещё охота написать что-то эффектное, чтобы печатался календарь на год, тогда и поправлю.
Добавлено через 48 минут Продолжаем форматно-календарную вакханалию!!! Вот, вроде работает. Правда, получилось несколько рид-онли. Два вложенных мапкара...
Добавлено через 6 часов 24 минуты А если первое выпадает на воскресенье, оно съедается, как показывает рассмотрение моего календаря. Там из-за того, что воскресенье вроде как день номер 0, а стоит в конце недели. Багфикс:
mikl25, вы ещё решаете или уже переписали решение Catstail-а? Охота собрать в единое целое весь свой могучий календарный проект.
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
| 02.04.2013, 21:57 [ТС] | |
|
helter, решаю, че то как то не очень получается..
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||||||
| 02.04.2013, 22:13 | ||||||
|
Давайте вместе делать. Я предлагаю в отличие от Catstail-а пойти арифметическим путём, потому что календарь есть арифметика вычетов и ничто иное.
Попробуйте сначала написать функцию, возвращающую день недели, если первое января приходится на понедельник. Это понятно как делать? В январе день будет остатком от деления на 7. Февраль сдвинут относительно января на одно и то же число. Я вам выше приводил сдвиги: 1 4 4 0 2 5 0 3 6 1 4 6 Если первое января - понедельник, то первое февраля - четверг, первое марта - четверг, первое апреля - воскресенье и т. д. Вот календарь на 1900 год для тестирования.
А потом, если не умеете, я вам расскажу, как засунуть это всё в пакет или даже сделать ASDF-систему.
0
|
||||||
|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
| 02.04.2013, 22:14 [ТС] | |
|
helter, вы уже почти дописали свой календарь как я вижу.
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
|
| 02.04.2013, 22:18 | |
|
Мой вроде нормально работает. То есть сам календарь вчера заработал: я не стал связываться с юлианским, а просто посчитал високосные годы в григорианском (и с вами вместе охота то же сделать). А сегодня я глюки в распечатывании убирал.
0
|
|
|
0 / 0 / 0
Регистрация: 29.03.2013
Сообщений: 81
|
|
| 02.04.2013, 22:20 [ТС] | |
|
helter, ASDF-систему, для чего вообще нужна? и что такое вообще?
0
|
|
|
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
|
||
| 02.04.2013, 22:45 | ||
|
Во-первых, надо завернуть их в пакет. Пакет - это типа пространства имён. Стандартная вещь - в смысле, входит в стандарт. Работать в умолчательном пакете cl - это только для баловства. Пакет - это хорошо, но это тоже абстрактная вещь. А вы ещё хотите, чтобы и Лисп узнал о существовании вашего пакета, чтобы можно было загрузить функции - с квалификацией ли, без ли. Именно для этого используют ASDF-системы. Это не входит в стандарт, но входит в мейнстрим. ASDF-система определяется в файле с расширением .asd, в котором хранится основная организующая информация о проекте: из каких файлов состоит, что от чего зависит, что где лежит, от каких внешних библиотек зависит. С ASDF-системами работает пакет asdf, который или искаропки подключен, или quicklisp позаботится, чтобы он подключался. С ASDF удобно работать не непосредственно, а через quicklisp - своего вида интерфейс. Пожалуй, quicklisp входит сейчас в джентльменский набор. Если вы засимлинчите свой проект в папку quicklisp/local-projects, можно будет загружать его командой навроде (ql:quickload 'calendar) Здесь calendar - название ASDF-системы, тёзки определяемого в ней пакета. По выполнении этой команды Лисп будет знать о существовании пакета 'calendar.
0
|
||
| 02.04.2013, 22:45 | |
|
Помогаю со студенческими работами здесь
20
Напечатайте календарь заданного месяца 1998 года
Написать программу, которая по введенному номеру месяца выводит время года Написать программу, которая возвращает количество дней для M-го месяца года Y
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|