Ocena użytkownikóww: ***** / 0
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);
}
}