hi
Aufgabe:
1. Programmieren Sie eine Klasse, die mit der modifizierten Gaußschen Osterformel von Lichtenberg das Osterdatum für ein Jahr J berechnet:
• Säkularzahl K (J) = J DIV 100
• Säkulare Mondschaltung M (K) = 15 + (3K + 3) DIV 4 − (8K + 13) DIV 25
• Säkulare Sonnenschaltung: S (K) = 2 − (3K + 3) DIV 4
• Mondparameter: A (J) = J MOD 19
• Keim für den ersten Vollmond im Frühling: D (A, M) = (19A + M) MOD 30
• Kalendarische Korrekturgröße: R (D, A) = D DIV 29 + (D DIV 28 − D DIV 29) (A DIV 11)
• Ostergrenze: OG (D, R) = 21 + D − R
• Erster Sonntag im März: SZ (J, S) = 7 − (J + J DIV 4 + S) MOD 7
• Entfernung des Ostersonntags von der Ostergrenze (Osterentfernung in Tagen): OE (OG, SZ) = 7 − (OG − SZ) MOD 7
• Datum des Ostersonntags als Märzdatum: OS = OG + OE Der 32. März ist der 1. April und so weiter.
in der Klasse OsterFormel, krieg ich das über der boolean abfrage nicht hin, dass sich das Datum dann in einem Schaltjahr auf + 1 Tag ändert. Kann mir das jmd. bitte mal überarbeiten. 2008 muss der Ostersonntag der 23. März ist und 2009 der 12. April sein. bei mir is es momentan 2008 der 24.März und 2009 ist es der 12. April
Aufgabe:
1. Programmieren Sie eine Klasse, die mit der modifizierten Gaußschen Osterformel von Lichtenberg das Osterdatum für ein Jahr J berechnet:
• Säkularzahl K (J) = J DIV 100
• Säkulare Mondschaltung M (K) = 15 + (3K + 3) DIV 4 − (8K + 13) DIV 25
• Säkulare Sonnenschaltung: S (K) = 2 − (3K + 3) DIV 4
• Mondparameter: A (J) = J MOD 19
• Keim für den ersten Vollmond im Frühling: D (A, M) = (19A + M) MOD 30
• Kalendarische Korrekturgröße: R (D, A) = D DIV 29 + (D DIV 28 − D DIV 29) (A DIV 11)
• Ostergrenze: OG (D, R) = 21 + D − R
• Erster Sonntag im März: SZ (J, S) = 7 − (J + J DIV 4 + S) MOD 7
• Entfernung des Ostersonntags von der Ostergrenze (Osterentfernung in Tagen): OE (OG, SZ) = 7 − (OG − SZ) MOD 7
• Datum des Ostersonntags als Märzdatum: OS = OG + OE Der 32. März ist der 1. April und so weiter.
Java:
public class OsterdatumMain {
public static void main(String[] argv)
{
MeineAusgabe.schreibe("Bitte Jahreszahl eingeben:");
int jahreszahlEingabe = MeineEingabe.erfasseInt();
System.out.print("Ostersonntag ist der ");
if(new OsterFormel(jahreszahlEingabe).ostertag() < 31)
System.out.print(new OsterFormel(jahreszahlEingabe).ostertag() + ". März " + jahreszahlEingabe + "\n");
else System.out.print(new OsterFormel(jahreszahlEingabe).ostertag()-31 + ". April " + jahreszahlEingabe + "\n");
}
}
class OsterFormel
{
private int jahr;
int K, A, M, S, D, R, OG, SZ, OE, OS, ostern;
boolean isSchaltjahr = true;
public OsterFormel(int jahr)
{
this.jahr = jahr;
}
public int ostertag()
{
K = jahr / 100;
M = 15 + (3*K + 3) / 4 - (8*K + 13) /25;
S = 2 - (3*K + 3) / 4;
A = jahr % 19;
D = (19*A + M) % 30;
R = (D / 29) + (D / 28) - (D / 29) * (A / 11);
OG = 21 + D - R;
SZ = 7 - (jahr + jahr / 4 + S) % 7;
OE = 7 - (OG - SZ) % 7;
OS = OG + OE;
if(isSchaltjahr == true)
return ostern = 23 + D;
else
return ostern = 22 + D;
}
public boolean isSchaltjahr(){
boolean ausgabe = true;
if (jahr % 4 == 0)
if (jahr % 100 == 0)
if (jahr % 400 == 0)
ausgabe = true;
else
ausgabe = false;
else
ausgabe = false;
else
ausgabe = false;
return ausgabe;
}
}
in der Klasse OsterFormel, krieg ich das über der boolean abfrage nicht hin, dass sich das Datum dann in einem Schaltjahr auf + 1 Tag ändert. Kann mir das jmd. bitte mal überarbeiten. 2008 muss der Ostersonntag der 23. März ist und 2009 der 12. April sein. bei mir is es momentan 2008 der 24.März und 2009 ist es der 12. April
Zuletzt bearbeitet: