Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм календаря, Загнать календарь в программу 
:(
    Опции темы
engaged
Дата 5.2.2013, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 22.4.2008

Репутация: нет
Всего: нет



bsa
а как определить, например, что 2012 был високосным? На 400 без остатка-то он не делится.

upd: Ой, это я спустя 5 лет спросил  smile 

Это сообщение отредактировал(а) engaged - 5.2.2013, 12:39
PM MAIL   Вверх
borisbn
Дата 5.2.2013, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



engaged, ничего страшного. главное, чтобы не через 400  smile 
Цитата(engaged @  5.2.2013,  12:32 Найти цитируемый пост)
как определить, например, что 2012 был високосным?

делится на 4, не делится на 100 (а раз он на 100 не делится, то вопрос о том, делится ли он на 400 отпадает сам собой. ещё раз  smile  )

Это сообщение отредактировал(а) borisbn - 5.2.2013, 14:37


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
feodorv
Дата 5.2.2013, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(borisbn @  5.2.2013,  15:36 Найти цитируемый пост)
то вопрос о том, делится ли он на 400 отпадает сам собой

Это не совсем так:
Код

#define isLeapYear(y) \
    (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))

То есть 1500, 1700, 1800, 1900, 2100 - не високосные года.
1600, 2000, 2400 - високосные.


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
borisbn
Дата 5.2.2013, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



feodorv, эк Вы умело процитировали  smile 
не
Цитата(borisbn @  5.2.2013,  14:36 Найти цитируемый пост)
то вопрос о том, делится ли он на 400 отпадает сам собой

а
Цитата(borisbn @  5.2.2013,  14:36 Найти цитируемый пост)
а раз он на 100 не делится, то вопрос о том, делится ли он на 400 отпадает сам собой




--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
feodorv
Дата 5.2.2013, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(borisbn @  5.2.2013,  18:25 Найти цитируемый пост)
feodorv, эк Вы умело процитировали  

Мда, прошу прощения smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
volatile
Дата 5.2.2013, 18:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(engaged @  5.2.2013,  12:32 Найти цитируемый пост)
как определить, например, что 2012 был високосным?

вибирайте:
Код

// Только для нового стиля
int is_leap_year_0 (int year)
{
   if (year %   4) return 0;
   if (year % 100) return 1;
   if (year % 400) return 0;
   return 1;
}

//--------------------------------
// Только для нового стиля
int is_leap_year_1 (int year)
{
    return ((year % 4 == 0 && year % 100) || year % 400 == 0);
}

//--------------------------------
// Только для нового стиля
int is_leap_year_2 (int year)
{
   return (year % 400 == 0 || (year % 100 && year % 4 == 0));
}

//--------------------------------
// Для нового и старого стилей
int is_leap_year_3 (int year, bool style)
{
   int q = year % 4 == 0;
   if (!q || style)
      return q;
   return year % 400 == 0 || year % 100 != 0;
}

//--------------------------------
// Для нового и старого стилей
int is_leap_year_4 (int year, bool style)
{
   if (year %   4) return 0;
   if ( style ) return 1;
   if (year % 100) return 1;
   if (year % 400) return 0;
   return 1;
}

//--------------------------------
// Для нового и старого стилей
int is_leap_year_5 (int year, bool style)
{
   int res = year % 4 == 0;
   if (!res) ;
   else if (style) ;
   else if (year % 100) ;
   else if (year % 400) res = 0;
   return res;
}

//--------------------------------
// Для нового и старого стилей
int is_leap_year_6 (int year, bool style)
{
   int res = year % 4 == 0;
   if (res)
      if (!style)
         if (year % 100 == 0)
            if (year % 400) res = 0;
   return res;
}
//--------------------------------
// Для нового и старого стилей
int is_leap_year_7 (int year, bool style)
{
   int res = year % 4 == 0;
   if (res && !style && year % 100 == 0 && year % 400)
      res = 0;
   return res;
}
//--------------------------------
// Для нового и старого стилей
int is_leap_year_8 (int year, bool style)
{
   int res = !(year % 4);
   return res && !style && !(year % 100) && year % 400 ? 0 : res;
}

//--------------------------------
// с использованием сторонней функции.
int is_leap_year_9 (int year, bool style)
{
   return serial_day (1, 3, year, style) - serial_day (29, 2, year, style);
}



PM MAIL   Вверх
borisbn
Дата 5.2.2013, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(volatile @  5.2.2013,  18:03 Найти цитируемый пост)
  if (year % 100) return 1;
   if (year % 400) return 0;


Неа.

Добавлено @ 22:14
Цитата(borisbn @  5.2.2013,  22:05 Найти цитируемый пост)
Неа. 

хотя, нет.
Ага.
это я уже начал брать в привычку (привет Java), что под if'ом должно быть только Boolean, и такого рода выражения читаются уже немного по-другому. Жаль что в плюсиках это - нормально.

Это сообщение отредактировал(а) borisbn - 5.2.2013, 22:15


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
volatile
Дата 5.2.2013, 23:17 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(borisbn @  5.2.2013,  22:05 Найти цитируемый пост)
такого рода выражения читаются уже немного по-другому

имхо, нормально читаюцца.
А жаба нам не указ, она, по последним сведениям,  ваще от паскаля произошла   smile
PM MAIL   Вверх
volatile
Дата 6.2.2013, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Ладно, еще немного в тему, кину кость любителям поиздевацца над синтаксисом С/С++ smile
(врочем так действитеьно писать не надо.)

Получение дня недели.
Универсальная, для нового и старого стилей.
вход: d, m, y - день, месяц, год
      s - стиль. 1- новый стиль (gregorian), 0 - старый стиль (julian). 
      (наоборот по сравнению с вышеприведенными високосами!)
(диапазон годы: [1.9999])
выход: 0=Вск, 1=Пон, ... 6=Суб
Код

int day_of_week (int d, int m, int y, bool s)

   d+=m<3?3+--y:y;return(d+y/4+s*(y/400-y/100+2)+23*m/9)%7; 
}

PM MAIL   Вверх
feodorv
Дата 6.2.2013, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(volatile @  6.2.2013,  01:02 Найти цитируемый пост)
Универсальная, для нового и старого стилей.

Забавная штука. Проверил на всём диапазоне time_t - работает smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
borisbn
Дата 6.2.2013, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(volatile @  6.2.2013,  00:02 Найти цитируемый пост)
Универсальная, для нового и старого стилей.

день должен задаваться от 0 ? Если нет, то неправильно работает - http://liveworkspace.org/code/17VwPR$4


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
feodorv
Дата 6.2.2013, 08:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(borisbn @  6.2.2013,  09:48 Найти цитируемый пост)
то неправильно работает

А чем Вас среда не устраивает?
Цитата(volatile @  6.2.2013,  01:02 Найти цитируемый пост)
выход: 0=Вск, 1=Пон, ... 6=Суб




--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
borisbn
Дата 6.2.2013, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(feodorv @  6.2.2013,  08:56 Найти цитируемый пост)
А чем Вас среда не устраивает?
Цитата(volatile @  6.2.2013,  01:02 )
выход: 0=Вск, 1=Пон, ... 6=Суб


блин.. опять невнимательно прочитал. всё-таки американская система исчисления дней недели (от Вск.) непривычная..



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
feodorv
Дата 6.2.2013, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Да ладно, 1:1 smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
NoviceF
Дата 8.2.2013, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

Репутация: 2
Всего: 2



Цитата(volatile @  6.2.2013,  00:17 Найти цитируемый пост)
А жаба нам не указ, она, по последним сведениям,  ваще от паскаля произошла    

 smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1394 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.