Wpisany przez Jakub Raban,
26 sierpnia 2015 17:50
Wielkanoc jest tak zwanym świętem ruchomym - oznacza to, że każdego roku występuje w inny dzień. Definicja mówi, iż przypada ona w pierwszą niedzielę po pierwszej pełni Księżyca przypadającej po równonocy wiosennej. W 1991 roku Jean Meeus opublikował sposób na obliczanie daty Wielkanocy. Można uznać tą metodę za lepszą od metody Gaussa, ponieważ nie ma od niej wyjątków i nie wymaga wartości dla danych zakresów czasu, jednak obliczenie wymaga wykonania większej ilości kroków.
Aby obliczyć datę Wielkanocy:
Datę możemy wyświetlić w formacie dd.mm lub też dodać dodatkową zmienną oraz blok warunkowy:
Jeżeli miesiąc wynosi 4, to słowo = "kwietnia", przeciwnie słowo = "marca"
Data Wielkanocy dla roku 2015:
Aby obliczyć datę Wielkanocy:
- Tworzymy zmienne całkowitoliczbowe a, b, c, d, e, f, g, h, i, k, l, m, p, zmienną przechowującą podany przez użytkownika rok, a także obliczony dzień i miesiąc
- Pobieramy rok od użytkownika
- a = rok [mod] 19
- b = zaokrąglenie w dół (rok / 100)
- c = rok [mod] 100
- d = zaokrąglenie w dół (b / 4)
- e = b [mod] 4
- f = zaokrąglenie w dół ((b + 8) / 25)
- g = zaokrąglenie w dół ((b – f + 1) / 3)
- h = (19 * a + b – d – g + 15) [mod] 30
- i = zaokrąglenie w dół (c / 4)
- k = c [mod] 4
- l = (32 + 2 * e + 2 * i – h – k) [mod] 7
- m = zaokrąglenie w dół ((a + 11 * h + 22 * l) / 451)
- p = (h + l – 7 * m + 114) [mod] 31
- dzień = p + 1
- miesiąc = zaokrąglenie w dół (h + l – 7 * m + 114) / 31
Datę możemy wyświetlić w formacie dd.mm lub też dodać dodatkową zmienną oraz blok warunkowy:
Jeżeli miesiąc wynosi 4, to słowo = "kwietnia", przeciwnie słowo = "marca"
Przykład:
Data Wielkanocy dla roku 2015:
- a = rok [mod] 19 = 1
- b = rok / 100 ≈ 20
- c = rok [mod] 100 = 15
- d = b / 4 ≈ 20 / 4 = 5
- e = b [mod] 4 = 20 [mod] 4 = 0
- f = (b + 8) / 25 = 28 / 25 ≈ 1
- g = (b – f + 1) / 3 = 20 / 3 ≈ 6
- h = (19 * a + b – d – g + 15) [mod] 30 = 43 [mod] 30 = 13
- i = c / 4 = 15 / 4 ≈ 3
- k = c [mod] 4 = 15 [mod] 4 = 3
- l = (32 + 2 * e + 2 * i – h – k) [mod] 7 = 22 [mod] 7 = 1
- m = (a + 11 * h + 22 * l) / 451 = 166 / 451 ≈ 0
- p = (h + l – 7 * m + 114) [mod] 31 = 128 [mod] 31 = 4
- dzień = p + 1 = 5
- miesiąc = (h + l – 7 * m + 114) / 31 = 128 / 31 ≈ 4
Przykład w JavaScript:
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
DarekS | C# | .cs | .cs | ***** / 0 | |
Michał Witaszek | C/C++ | .cpp | .cpp | ***** / 0 | |
Jakub Raban | Java | .java | .java | ***** / 0 | |
Michał Witaszek | JavaScript | .js | .js | ***** / 1 | |
Mariusz653456 | Python | .py | .py | ***** / 2 |
Poprawiony: 09 września 2015 14:38