algorytm.org

Implementacja w C#



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Wyznaczanie daty Wielkanocy - algortym Gaussa - Implementacja w C#
Ocena użytkownikóww: *****  / 7
SłabyŚwietny
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");
		   }

		}
	}
}
Dodaj komentarz