Entwickler-Ecke

Sonstiges (Delphi) - Problem bei einem Schaltjahrberechner-Programm


Pazzii - Di 19.04.05 13:30
Titel: Problem bei einem Schaltjahrberechner-Programm
Hallo,
ich habe mal so zum Spaß eben einen Schaltjahrberechner gemacht, bei dem man die Jahreszahl eingeben muss,
und das Programm überprüft dann, ob dieses Jahr ein Schaltjahr ist.
In dem Programm ist "Edit1" das Eingabefeld der Jahreszahl und "Edit2" das Ausgabefeld (Es erscheint eine
Meldung mit "ja" oder "nein"!).
Mein "procedure" sieht so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var a:integer;
begin
a:=StrToInt(edit1.text);
if (a mod 4=0or (a mod 100<> 0or (a mod 400=0then edit2.text:='ja'
else edit2.text:='NÖ!'
end;


Bitte bedenkt, dass ich ein ziemlicher Anfänger bin und vielleicht einen simplen Fehler übersehen hab,
aber ich komm grad echt ned drauf.
Danke schon mal für eure Hilfe.
Übrigens: SO, wie er jetzt ist, kommt beim Berechner immer "Ja!".

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.


jasocul - Di 19.04.05 13:48

:welcome: im DF.

Da du in deinem if alles mit or verknüpft hast, genügt es, wenn EINE der Bedingungen erfüllt ist.
Somit ist jedes durch 4 teilbare Jahr ein Schaltjahr. Da außerdem alle anderen Jahre nicht durch 100 teilbar sind, ist für alle anderen Fälle auch diese Bedingung erfüllt.

Da du gerade am Üben bist, lasse ich dich jetzt mal weitermachen ohne dir zu sagen, wie es richtig aussehen muss.


Pazzii - Di 19.04.05 13:58

Danke für den Tipp mit den Verknüpfungen,
hier meine Antwort 8) :


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);
var a:integer;
begin
a:=StrToInt(edit1.text);
if (a mod 4=0)  or (a mod 400=0) [b]and[/b] (a mod 100<> 0then edit2.text:='ja'
else edit2.text:='NÖ!'
end;


Schönen Tach noch und danke nochmal :lol:

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.


fvolk - Di 19.04.05 17:32

Ohne deinen Arbeitseifer bremsen zu wollen (denn selbstgemacht ist bekanntlicherweise am besten, weil man weiß, was passiert) ... gab's da nicht mal die wunderbare Delphi-Funktion IsLeapYear()?

*klugscheiß*