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.