algorytm.org

Implementacja w Java



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 Java
Ocena użytkownikóww: *****  / 4
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.

Wielkanoc.java:
// Obliczanie daty wielkanocy - algorytm Gaussa
// www.algorytm.org
// (c) 2008 by Tomasz Lubinski

public class Wielkanoc {

	/* Pobierz wartosc A z tabeli lat */
	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 */
	}

	/* Pobierz wartosc B z tabeli lat */
	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 */	   
	}

	/* oblicz ile dni po 22 marca przypada wielkanoc */
	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;
	}
	
	/**
	 * Oblicz date wielkanocy
	 */
	public static void main(String[] args) {
		   int rok;
		   int data;
		   
		   System.out.println("Podaj rok (33-2499)");
		   rok = Console.readInt("");
		   
		   if ((rok < 33) || (rok > 2499))
		   {
			  System.out.println("Podany rok nie jest w zakresie 33-2499");
		      return;
		   }
		   
		   data = 22 + wielkanoc(rok);
		   if (data > 31)
		   {
			   System.out.println("Wielkanoc przypada " + (data%31)+ " kwietnia");
		   }
		   else
		   {
			   System.out.println("Wielkanoc przypada " + data + " marca");
		   }
	}

}
Dodaj komentarz