Wielkanoc

0

Zadaniem Twojego programu jest wyznaczyć datę Wielkanocy w danym roku kalendarzowym. Interesuje nas
tylko XIX, XX, XXI i XXII wiek i kalendarz gregoriański. W kościołach zachodnich Wielkanoc przypada
w pierwszą niedzielę po pierwszej wiosennej pełni Księżyca, przypadającej po 21 marca.
Metody wyznaczania daty Wielkanocy podali m.in. Gauss∗
i Meeus†
.
Wejście
Na wejściu znajduje się jedna liczba całkowita r (1800 ≤ r < 2200), oznaczająca rok.
Wyjście
Twój program powinien wypisać na wyjście dwie liczby całkowite d i m, oddzielone spacją, oznaczające dzień
(liczba między 1 a 31) i miesiąc (liczba między 1 a 12), w którym w roku r obchodzona jest Wielkanoc.
Przykład
Dla danych wejściowych:
2014
poprawnym wynikiem jest:
20 4
natomiast dla danych wejściowych:
2015
poprawnym wynikiem jest:
5 4

===================================================================================================================
Nie wiem co jest ze mną nie tak, ale nie wiem jak się za to zabrać. Myślałem nad tym zadaniem dobrą godzinę, lecz nic mi nie przychodzi do głowy.
Gdyby można było, prosiłbym o rozwiązanie tego problemu z ewentualnymi komentarzami.

0

VB (Excel)

Function Wielkanoc(y As Integer) As Date
    
    Dim d As Integer
    Dim p As Integer, q As Integer, r As Integer, s As Integer
    
    If y < 1800 Or y >= 2200 Then Err.Raise (0)
    
    If y < 1900 Then
        p = 23: q = 4
    ElseIf y < 2100 Then
        p = 24: q = 5
    Else
        p = 24: q = 6
    End If
    
    r = (19 * (y Mod 19) + p) Mod 30
    s = (2 * (y Mod 4) + 4 * (y Mod 7) + 6 * r + q) Mod 7
    d = r + s
    If d = 35 Or (d = 34 And (11 * (p + 1)) Mod 30 < 19) Then d = d - 7
    
    Wielkanoc = DateSerial(y, 3, 22) + d

End Function

1 użytkowników online, w tym zalogowanych: 0, gości: 1