Entwickler-Ecke

Sonstiges (Delphi) - Schaltjahrberechnung


Alika - Di 21.02.06 22:20
Titel: Schaltjahrberechnung
Hallo an alle! Bin neu hier und weiß nicht recht wo ich hin schreiben sollte.
Wir sollen ein Programm in Delphi programmieren, dass wenn man ein Jahr eingibt es uns sagt ob es ein Schaltjahr ist... Weiß nicht was ich machen soll
HeLP!!

Moderiert von user profile iconGausi: Titel geändert - hier braucht jeder Hilfe.
Moderiert von user profile iconGausi: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 22.02.2006 um 09:24


mkinzler - Di 21.02.06 22:24

Ein Schlatjahr ist durch 4 teilbrar aber nicht durch 100 wenn es nicht durch 1000 teilbar ist also


Delphi-Quelltext
1:
if (jahr mod 4 = 0and ((jahr mod 100 <> 0or ( jahr mod 1000 = 0then ... //Schaltjahr                    


jasocul - Di 21.02.06 22:29

Mal abgesehen davon, dass das falsch ist, gibt es in Delphi die Funktion IsLeapYear. Einfach mal in der Delphi-Hilfe nachschauen.
@mkinzler:
Schaltjahr:
Wenn es durch vier teilbar ist, dann ist es eins.
Ist es durch 100 teilbar, dann doch nicht.
Falls es dann aber durch 400 teilbar, dann aber doch.


Alika - Di 21.02.06 22:35

Da ich auch Anfänger bei Delphi bin könntet ihr mir bitte den Quelltext geben?


Amateur - Di 21.02.06 22:37

nein können wir nicht... //edit: jasocul (sorry! hatte den thread nur schnell überflogen und gedacht es wäre christian gewesen... war keine absicht) hat dir doch gesagt wie man es berechnet und dass es sogar eine funktion dafür gibt. mehr können wir nun wirklich nicht tun.


jasocul - Di 21.02.06 22:44

Christian??? Ich dachte ich heiße Peter. :wink:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
if IsLeapYear(2006then // hier kannst du auch eine Variable verwenden statt 2006
begin
  ShowMessage('Das ist ein Schaltjahr');
end
else
begin
  ShowMessage('Da hat der Februar nur 28 Tage');
end;


Florian.K - Mi 22.02.06 00:31

Ich finde man sollte ein Forum nicht nutzen um Hausaufgaben in Auftrag zu geben. Wenn du Hilfe brauchst 218987911


jasocul - Mi 22.02.06 08:55

@Florian:
Im Prinzip hast du Recht. Daher habe ich auch nur die Funktion aus Delphi genannt. Die Aufgabe soll sicher nicht mit dieser Funktion gelöst werden. Könnte aber zumindest als Kontrolle dienen, ob eine selbstgeschriebene Funktion korrekt ist.
Was geprüft werden muss, wurde weiter oben ja auch genannt. Und dafür gibt es keinen Source.


Gausi - Mi 22.02.06 10:13

Im Gegensatz zur Aussage von oben:

Ein Jahr ist ein Schaltjahr, wenn die Jahreszahl durch 4 teilbar ist.
Wenn die Jahreszahl durch 100 teilbar ist, ist kein Schaltjahr, es sei denn, die Jahreszahl ist durch 400 (nicht 1000) teilbar.

Das Jahr 2000 war also ein Schaltjahr, weil 2000 durch 400 teilbar ist, nicht weil 2000 durch 100 teilbar ist ;-)


jasocul - Mi 22.02.06 10:15

Habe ich was anderes gesagt? :gruebel:


Gausi - Mi 22.02.06 10:23

Oh. Ich meinte Mkinzler, aber das hattest du ja schon richtig gestellt. Ich glaube, ich leg mich noch was hin... :oops:


Delete - Mi 22.02.06 21:01

man kann ja auch die tage weiterzählen... wenn man weiss, wie lang ein jahr ist...

nach dem allgemein anerkannten kalender der westlichen hemisphäre wären dies


Quelltext
1:
365,2425 tage je jahr                    


wer es nicht glaubt, kanns ja nachrechnen ;-)


AXMD - Mi 22.02.06 21:16

user profile iconmkinzler hat folgendes geschrieben:
Ein Schlatjahr ist durch 4 teilbrar aber nicht durch 100 wenn es nicht durch 1000 teilbar ist also


Delphi-Quelltext
1:
if (jahr mod 4 = 0and ((jahr mod 100 <> 0or ( jahr mod 1000 = 0then ... //Schaltjahr                    


Das or ist nicht notwendig, eine Zahl, die durch 1000 teilbar ist, ist auch durch 4 teilbar.

AXMD


Blackheart666 - Mi 22.02.06 21:33

Von Papst Gregor XIII. wurde daher 1582 folgende Regelung eingeführt (Gregorianischer Kalender):

Glatt durch 4 teilbare Jahre sind Schaltjahre.
Glatt durch 100 teilbare Jahre sind jedoch keine Schaltjahre.
Glatt durch 400 teilbare Jahre sind aber wieder Schaltjahre.
So sind zum Beispiel die Jahre 1800, 1900 und 2100 keine Schaltjahre, die Jahre 2000 und 2400 hingegen schon. Damit dauert das Gregorianische Jahr 365,2425 Tage, und ist genauer als das Julianische Jahr.

http://www.wissenglobal.de/Schaltjahr.html


Delete - Mi 22.02.06 21:35

jetzt wird der ärmste total verwwwwiiiiirrrrrttttt :twisted:


jasocul - Do 23.02.06 08:54

@AXMD:
Deswegen wird das eine ja auf ungleich und das andere auf gleich geprüft. Mal agesehen davon, dass die 1000 sowieso die falsche Zahl ist. :wink: