БлогNot. Задача про количество дней по номеру месяца

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

Задача про количество дней по номеру месяца

Считать количество дней месяца по костяшкам пальцев умеют все (или раньше умели все).

А есть ли способ узнать формулой количество дней в месяце по его номеру от 1 до 12 включительно?

То есть, не использовать массивы, которые в данном случае, может, и быстрее будут работать, а именно аналитически подсчитать?

Количество дней в феврале, для простоты, можно принять всегда равным 28.

Способов, как минимум, два, вот они оба в консоли C++:

#include <iostream>
using namespace std;

int numberofDaysByMonth (int m) {
 return 28 + (m + m/8) % 2 + 2 % m + 1 / m * 2;
}

int main() {
 for (int month = 1; month<13; month++) {
  cout << numberofDaysByMonth (month) << " ";
 }
 cin.get();
 return 0;
}

И, неожиданно, можно с ещё меньшим количеством операций, если применить немного побитовой магии:

#include <iostream>
using namespace std;

int main() {
 for (int month = 1; month<13; month++) {
  int i = 0x1C + ((0x03BBEECC >> (2 * month)) & 0x3);
  cout << i << " ";
 }
 cin.get();
 return 0;
}

теги: дата числа алгоритм c++

30.05.2018, 12:36; рейтинг: 151

  свежие записипоиск по блогукомментариистатистика

Наверх Яндекс.Метрика
© PerS
вход