Nadesłany przez Tomasz Lubiński, 19 lutego 2008 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Data Wielkanocy - Gauss/Data_Wielkanocy_Gauss.cs:
// Obliczanie daty wielkanocy - algorytm Gaussa // www.algorytm.org // (c) 2008 by Tomasz Lubinski using System; namespace Data_Wielkanocy___Gauss { /// <summary> /// Obliczanie daty wielkanocy - algorytm Gaussa. /// </summary> class Data_Wielkanocy { /// <summary> /// Pobierz wartosc A z tabeli lat /// </summary> /// <param name="rok">rok dla ktorego pobrac wartosc z tabeli</param> /// <returns>Wspolczynnik A dla podanego roku</returns> private static int getA(int rok) { if (rok <= 1582) { return 15; } if (rok <= 1699) { return 22; } if (rok <= 1899) { return 23; } if (rok <= 2199) { return 24; } if (rok <= 2299) { return 25; } if (rok <= 2399) { return 26; } if (rok <= 2499) { return 25; } return 0; /* poza zakresem */ } /// <summary> /// Pobierz wartosc B z tabeli lat /// </summary> /// <param name="rok">rok dla ktorego pobrac wartosc z tabeli</param> /// <returns>Wspolczynnik B dla podanego roku</returns> private static int getB(int rok) { if (rok <= 1582) { return 6; } if (rok <= 1699) { return 2; } if (rok <= 1799) { return 3; } if (rok <= 1899) { return 4; } if (rok <= 2099) { return 5; } if (rok <= 2199) { return 6; } if (rok <= 2299) { return 0; } if (rok <= 2499) { return 1; } return 0; /* poza zakresem */ } /// <summary> /// oblicz ile dni po 22 marca przypada wielkanoc /// </summary> /// <param name="rok">Rok dla ktorego przeprowadzane sa obliczenia</param> /// <returns>liczba dni po 22 marca, w ktore przypada wielkanoc</returns> public static int wielkanoc(int rok) { int a, b, c, d, e; a = rok % 19; b = rok % 4; c = rok % 7; d = (a*19 + getA(rok)) % 30; e = (2*b + 4*c + 6*d + getB(rok)) % 7; if ((d == 29 && e == 6) || (d == 28 && e == 6)) { d-=7; } return d+e; } /// <summary> /// Oblicz date wielkanocy. /// </summary> [STAThread] static void Main(string[] args) { int rok; int data; Console.WriteLine("Podaj rok (do 33-2499)"); rok = int.Parse(Console.ReadLine()); if ((rok < 33) || (rok > 2499)) { Console.WriteLine("Podany rok nie jest w zakresie do 33-2499"); return; } data = 22 + wielkanoc(rok); if (data > 31) { Console.WriteLine("Wielkanoc przypada " + (data%31)+ " kwietnia"); } else { Console.WriteLine("Wielkanoc przypada " + data + " marca"); } } } }