Hallo Leute,
ich versuche gerade ein Programm zu schreiben(Osterformel nach Carl Friedrich Gauß) und benötige dringend Hilfe da ich nicht weiterkomme.
Das Programm soll berechnen, an welchem Tag Ostersonntag ist. Habe dazu folgenden Code:
using System;
public class osterformel {
public static void Main(string[] args) {
int zahl, k, m, s, r, og, os, a, d, sz, oe;
zahl = Int32.Parse(args[0]);
k = zahl / 100;
m = 15 + (3 * k + 3) / 4 - (8 * k + 13) / 25;
s = 2 - (3 * k + 3) / 4;
a = zahl % 19;
d = (19 * a + m % 30);
r = d / 29 + (d / 28 - d / 29) * a / 11;
og = 21 + d - r;
sz = 7 - (zahl + zahl / 4 + s % 7);
oe = 7 - (og - sz % 7);
os = og + oe;
Console.WriteLine("Ostersonntag im Jahr " + zahl + " war am {0}", os);
}
}
Leider wirft das Programm mir nicht die richtigen Ergebnisse aus. Z.B. wenn ich den Ostersonntag im Jahr 2001 wissen möchte berechnet mir das Programm den 4.April und richtig wäre der 15.April. Was ist falsch? Hat es was mit Mod zu tun, das Mod irgendwie falsch berechnet wird? Danke.
Ich denke das findest du mit dem Debugger schnell raus.
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Schau dir mal Gaußsche Osterformel: Eine ergänzte Osterformel an. Deine Formeln für d, sz und oe stimmen nicht (beachte die Klammern bzgl. mod).
@Coffeebean: mit dem Debugger alleine wird es schwer, wenn man nicht weiß, welche Formeln dahinter stehen bzw. welche Werte zu erwarten sind 🤔
@Coffeebean: mit dem Debugger alleine wird es schwer, wenn man nicht weiß, welche Formeln dahinter stehen bzw. welche Werte zu erwarten sind 👶
Naja, die Berechnung sind "simple" Formeln. Die Frage
Hat es was mit Mod zu tun, das Mod irgendwie falsch berechnet wird? lässt sich mit dem Debugger wunderbar beantworten wenn man sich das Ergebnis anschaut und mit dem vergleicht, was man erwartet. Dass man sich den Mod anschaut bevor man ihn verwendet setzen wir aufgrund der Eigeninitiative voraus.
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Toll nun hat es geklappt. Klammern waren wie gesagt wurde falsch gesetzt. Der richtige Code:
using System;
public class osterformel
{
public static void Main(string[]args)
{
int zahl, k, m, s, r, og, os, a, d, sz, oe;
zahl = Int32.Parse(args[0]);
k = zahl / 100;
m = 15 + (3 * k + 3) / 4 - (8 * k + 13) / 25;
s = 2 - (3 * k + 3) / 4;
a = zahl % 19;
d = (19 * a + m) % 30;
r = d / 29 + (d / 28 - d / 29) * a / 11;
og = 21 + d - r;
sz = 7 - (zahl + zahl / 4 + s) % 7;
oe = 7 - (og - sz) % 7;
os = og + oe;
if (os > 31)
Console.WriteLine("Ostersonntag im Jahr " + zahl + " war am {0} April. ", os - 31);
else
if (os <= 31)
Console.WriteLine("Ostersonntag im Jahr " + zahl + " war am {0} März. ", os);
}
}
Danke!
Bitte benutze Code Tags!
[Hinweis] Wie poste ich richtig? Punkt 6