Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Programm zur Bestimmung eines Wochentages zu einem bestimmten Datum
- // und ob das Jahr ein Schaltjahr ist.
- // Von Paul Rambow und Lennard Kirchner 16.11.2020
- program Ueb03;
- {$APPTYPE CONSOLE}
- {$R+,Q+,X-}
- uses
- System.SysUtils;
- var
- Month, Day, Weekday, Year: SmallInt;
- YearLastDigits, YearFirstDigits, CalcMonth: Byte;
- IsLeapYear: Boolean;
- begin
- // Input
- write('Bitte den Tag eingeben (1..31): ');
- Readln(Day);
- write('Bitte den Monat eingeben (1..12): ');
- Readln(Month);
- write('Bitte das Jahr eingeben (1..2999): ');
- Readln(Year);
- // PROCESSING
- // Input Range Check
- if (Day > 31) or (Day < 1) then
- writeLn('Ungültger Tag!')
- else if (Month > 12) or (Month < 1) then
- writeLn('Ungültiger Monat!')
- else if (Year > 2999) or (Year < 1) then
- writeLn('Ungültiges Jahr!')
- else
- begin
- // LeapYear Calculation
- if (Year mod 400 <> 0) then
- if (Year mod 100 <> 0) then
- if (Year mod 4 <> 0) then
- IsLeapYear := False
- else
- IsLeapYear := True
- else
- IsLeapYear := False
- else
- IsLeapYear := True;
- // 31. Day of Month Check
- if (Day = 31) then
- if (((Month < 8) and (not odd(Month))) or ((Month > 7) and odd(Month)))
- then
- writeLn('Den ', Day, '. gibt es in diesem Monat nicht!')
- else
- // Februray Check
- else if (Month = 2) then
- if (IsLeapYear and (Day > 29)) or (not(IsLeapYear) and (Day > 28)) then
- writeLn('Den ', Day, '. gibt es in diesem Monat nicht!')
- else
- begin
- CalcMonth := Month - 2 + (Byte(Month - 2 < 1) * 12);
- YearFirstDigits := (Year - Byte((Month = 1) or (Month = 2))) div 100;
- YearLastDigits := (Year - Byte((Month = 1) or (Month = 2))) mod 100;
- // Calculating Weekday with given formula
- Weekday := (Day + trunc(2.6 * CalcMonth - 0.19) + YearLastDigits +
- trunc(YearLastDigits / 4) + trunc(YearLastDigits / 4) - 2 *
- YearFirstDigits) mod 7;
- Weekday := Weekday + (Byte(Weekday < 0) * 7);
- write('Der ', Day, '.', Month, '.', Year);
- case Weekday of
- 0:
- write(' ist ein Sonntag ');
- 1:
- write(' ist ein Montag ');
- 2:
- write(' ist ein Dienstag ');
- 3:
- write(' ist ein Mittwoch ');
- 4:
- write(' ist ein Donnerstag ');
- 5:
- write(' ist ein Freitag ');
- 6:
- write(' ist ein Samstag ');
- end;
- write('und liegt sich in ');
- if IsLeapYear then
- Write('einem ')
- else
- write('keinem ');
- write('Schaltjahr!');
- end
- end;
- Readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement