Dzień tygodnia: liczenie dni od roku 1

Projekt: wieczny kalendarz - Podstawy C++ (C++)

Najważniejszy krok: dzień tygodnia. Liczymy, ile WSZYSTKICH dni minęło od 1 stycznia roku 1 do naszej daty: pełne lata wcześniej + miesiące w tym roku + dni. Reszta z dzielenia przez 7 (% 7) daje numer dnia tygodnia. Sprawdzenie: 1 stycznia 2000 to sobota (numer 5).

#include <iostream>
using namespace std;

bool przestepny(int r) {
  return (r % 4 == 0 && r % 100 != 0) || r % 400 == 0;
}

int dniMiesiaca(int m, int r) {
  int dni[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
  if (m == 2 && przestepny(r)) {
    return 29;
  }
  return dni[m - 1];
}

int dzienTygodnia(int d, int m, int r) {
  int suma = 0;
  for (int y = 1; y < r; y++) {
    suma += przestepny(y) ? 366 : 365;
  }
  for (int mc = 1; mc < m; mc++) {
    suma += dniMiesiaca(mc, r);
  }
  suma += d - 1;
  return suma % 7;
}

int main() {
  cout << dzienTygodnia(1, 1, 2000) << endl;
  return 0;
}

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Podstawy C++ · Zaloguj się, aby zapisać postęp na koncie.