![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Politexnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 1.3.2008 Где: Ереван, Армения Репутация: нет Всего: нет |
Здравствуйте!!!
Когда смотришь на наш календарь, невольно приходит мысль о том, что есть некий алгоритм его построения. Ведь дни недели данного месяца каждый год двигаются на один день вперед. После високосных годов передвигаются аж на два дня, и т.д. Попытался как-то всунуть это в концепцию С++, но не очень то получилось. Буду рад, если ВЫ мне подскажите, как это реализовать. Это НЕ вопрос "жизни и смерти" (как любят многие говорить). Просто ради интереса. Заранее благодарен! |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
||||
|
||||
Politexnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 1.3.2008 Где: Ереван, Армения Репутация: нет Всего: нет |
Дорогой JackYF,
Проблема в самом построении алгоритма! К примеру то же передвижение дня недели изо года в год. Можно сунуть в цикл??? Можно!!! Только как сделать так, чтоб через каждые 4 года день перепрыгивал на два шага вперед??? Или дни месяца... Как сделать чередование месяцев с 30 и 31 днями(ведь в чередующихся июле и августе по 31 дню в каждом). Не говорю про февраль со своими 28 днями и этим високосным днем. Саму схему построения и вывода месяца можно сделать матрицей. Это понятно. А как же остальное??? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
воспользуйся функцией localtime и будет тебе счастье.
|
|||
|
||||
Politexnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 1.3.2008 Где: Ереван, Армения Репутация: нет Всего: нет |
Можно немножечко поподробнее??? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
http://www.google.com/search?q=man+localtime -> http://linux.die.net/man/3/localtime |
|||
|
||||
Politexnik |
|
|||
Новичок Профиль Группа: Участник Сообщений: 14 Регистрация: 1.3.2008 Где: Ереван, Армения Репутация: нет Всего: нет |
Спасибо, bsa.
Но неужели это значит, что НЕЛЬЗЯ на С++ написать алгоритм календаря??? ![]()
Счастье будет когда я САМ (или с Вашей помощью) напишу алгоритм календаря ![]() |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
http://www.cs.umd.edu/~khennacy/research/cell/calendar.pdf
Алгоритмы не пишутся на Си/Си++ или других языках. Алгоритмы пишутся на псевдоязыках. И если у тебя вопрос по алгоритмам, то тебе в другой раздел. |
|||
|
||||
andfurs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 23.2.2008 Репутация: нет Всего: нет |
попробуй в вики набрать ВЕЧНЫЙ КАЛЕНДАРЬ, там будут таблицы по которой можно вычислить дни недели в районе 2500 лет.
|
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
алгоритм примерно такой, берешь один день, в котором ты точно уверен, например 6.03.08 - четверг. затем допустим тебе надо определить что за день недели 13.03.08 для этого тебе нужно разность дат разделить на 7 (кол-во дней недели). если остаток от деления 0, значит -четверг, если 6 -среда, если 5 - вторник и т.д. а каждый четвертый раз добавлять дату 29 февраля. если же ты и даты не хочешь использовать, а все хочешь написать сам, то можно и другое предложить)
Добавлено через 58 секунд забыл написать что разность дат нужно делить на 7)))) извини -------------------- |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Dmi3ev, а то что год делящийся нацело на 100 високосным не является, а те что делятся на 1000 являются ты учел?
Это сообщение отредактировал(а) bsa - 6.3.2008, 11:47 |
|||
|
||||
virtual09 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 44 Регистрация: 3.10.2007 Репутация: нет Всего: нет |
||||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
я про год ничего не говорил, кроме того, что сейчас он високосный и мы это знаем, каждые 4 года он високосный, тоже знаем, соответственно можно в цикле сделать условие, что каждый 4 раз 29 февраля будет. просто не совсем понятно, что именно человек хочет. ведь можно тупо пользоваться функциями С++ или установить билдер и кинутьDateTimePicker на форму))))))))))))
Добавлено через 2 минуты и 46 секунд bsa, действительно, 1900 и 2000 не високосные????? я про это ничего не знаю и virtual09 тоже, поясни???? -------------------- |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
1900 не является (делится на 100). 2000 является (делится на 400, я ошибся когда сказал 1000): http://ru.wikipedia.org/wiki/Високосный_год |
|||
|
||||
Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
спасибо, к своему стыду не знал, честно признаюсь. bsa, спасибо!!! значит надо добавить и эти условия с делением года 100 и 400, и задача решится.
bsa, ещё раз спасибо, никак не думал (может, потому что не жил в 1900))))))) -------------------- |
|||
|
||||
engaged |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
bsa,
а как определить, например, что 2012 был високосным? На 400 без остатка-то он не делится. upd: Ой, это я спустя 5 лет спросил ![]() Это сообщение отредактировал(а) engaged - 5.2.2013, 12:39 |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
engaged, ничего страшного. главное, чтобы не через 400
![]() делится на 4, не делится на 100 (а раз он на 100 не делится, то вопрос о том, делится ли он на 400 отпадает сам собой. ещё раз ![]() Это сообщение отредактировал(а) borisbn - 5.2.2013, 14:37 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Это не совсем так:
То есть 1500, 1700, 1800, 1900, 2100 - не високосные года. 1600, 2000, 2400 - високосные. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
feodorv, эк Вы умело процитировали
![]() не а
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
вибирайте:
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Неа. Добавлено @ 22:14 хотя, нет. Ага. это я уже начал брать в привычку (привет Java), что под if'ом должно быть только Boolean, и такого рода выражения читаются уже немного по-другому. Жаль что в плюсиках это - нормально. Это сообщение отредактировал(а) borisbn - 5.2.2013, 22:15 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
||||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Ладно, еще немного в тему, кину кость любителям поиздевацца над синтаксисом С/С++
![]() (врочем так действитеьно писать не надо.) Получение дня недели. Универсальная, для нового и старого стилей. вход: d, m, y - день, месяц, год s - стиль. 1- новый стиль (gregorian), 0 - старый стиль (julian). (наоборот по сравнению с вышеприведенными високосами!) (диапазон годы: [1.9999]) выход: 0=Вск, 1=Пон, ... 6=Суб
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Забавная штука. Проверил на всём диапазоне time_t - работает ![]() -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
день должен задаваться от 0 ? Если нет, то неправильно работает - http://liveworkspace.org/code/17VwPR$4 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
А чем Вас среда не устраивает? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
блин.. опять невнимательно прочитал. всё-таки американская система исчисления дней недели (от Вск.) непривычная.. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Да ладно, 1:1
![]() -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
NoviceF |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 313 Регистрация: 13.3.2012 Где: Ростов-на-Дону Репутация: 2 Всего: 2 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |