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 - metoda Meeusa/Jonesa/Butchera - Implementacja w Java
Ocena użytkownikóww: *****  / 0
SłabyŚwietny
Nadesłany przez Jakub Raban, 26 sierpnia 2015 21:03
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.

Easter.java:
//Obliczanie daty Wielkanocy - metoda Meeusa/Jonesa/Butchera
//Jakub Raban
//www.algorytm.org

import java.util.InputMismatchException;
import java.util.Scanner;

class Run {
	public static void main(String ... args) {
		Easter easter = new Easter();
		easter.scanYear();
	}
}


class Easter {	

	int year = 0;
	int day, month;
	
	void scanYear() {
		System.out.print("Podaj rok, dla ktorego chcesz uzyskac date Wielkanocy: ");
		Scanner sc = new Scanner(System.in);
		try {
			year = sc.nextInt();
			if(year < 1) {
				System.out.println("Podaj liczb� dodatni�!");
				scanYear();
			}
		} catch(InputMismatchException ime) {
			System.out.println("Zly format liczby!");
			scanYear();
		}
		sc.close();
		count();
	}
	
	void count() {
		int a, b, c, d, e, f, g, h, i, k, l, m, p;
		
		a = year % 19;
		b = (int) year / 100;
		c = year % 100;
		d = (int) b / 4;
		e = b % 4;
		f = (int) ((b + 8) / 25);
		g = (int) ((b - f + 1) / 3);
		h = (19 * a + b - d - g + 15) % 30;
		i = (int) c / 4;
		k = c % 4;
		l = (32 + 2 * e + 2 * i - h - k) % 7;
		m = (int) ((a + 11 * h + 22 * l) / 451);
		p = (h + l - 7 * m + 114) % 31;
		
		day = p + 1;
		month = (int) ((h + l - 7 * m + 114) / 31);
		print();
	}
	
	void print() {
		String wordMonth = month == 4 ? "kwietnia" : "marca";
		System.out.println("W roku " + year + " Wielkanoc przypada " + day + " " + wordMonth);
		System.exit(0);
	}
}
Dodaj komentarz