Find the last Sunday of each month: Difference between revisions
Content added Content deleted
(Fixed order (Free Pascal, FreeBASIC)) |
|||
Line 2,052: | Line 2,052: | ||
29/12/2013 : Sunday |
29/12/2013 : Sunday |
||
What year (non-positive to quit):0 |
What year (non-positive to quit):0 |
||
</pre> |
|||
=={{header|Free Pascal}}== |
|||
<lang pascal> |
|||
program sundays; |
|||
Uses sysutils; |
|||
type |
|||
MonthLength = Array[1..13] of Integer; |
|||
procedure sund(y : Integer); |
|||
var |
|||
dt : TDateTime; |
|||
m,mm : Integer; |
|||
len : MonthLength; |
|||
begin |
|||
len[1] := 31; len[2] := 28; len[3] := 31; len[4] := 30; |
|||
len[5] := 31; len[6] := 30; len[7] := 31; len[8] := 31; |
|||
len[9] := 30; len[10] := 31; len[11] := 30; len[12] := 31; len[13] := 29; |
|||
for m := 1 to 12 do |
|||
begin |
|||
mm := m; |
|||
if (m = 2) and IsLeapYear( y ) then |
|||
mm := 13; |
|||
dt := EncodeDate( y, mm, len[mm] ); |
|||
dt := EncodeDate( y, mm, len[mm] - DayOfWeek(dt) + 1 ); |
|||
WriteLn(FormatDateTime('YYYY-MM-DD', dt )); |
|||
end; |
|||
end; |
|||
var |
|||
i : integer; |
|||
yy: integer; |
|||
begin |
|||
for i := 1 to paramCount() do begin |
|||
Val( paramStr(1), yy ); |
|||
sund( yy ); |
|||
end; |
|||
end. |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
./sundays 2025 |
|||
2025-01-26 |
|||
2025-02-23 |
|||
2025-03-30 |
|||
2025-04-27 |
|||
2025-05-25 |
|||
2025-06-29 |
|||
2025-07-27 |
|||
2025-08-31 |
|||
2025-09-28 |
|||
2025-10-26 |
|||
2025-11-30 |
|||
2025-12-28 |
|||
</pre> |
</pre> |
||
Line 2,157: | Line 2,215: | ||
26 November |
26 November |
||
31 December</pre> |
31 December</pre> |
||
=={{header|Free Pascal}}== |
|||
<lang pascal> |
|||
program sundays; |
|||
Uses sysutils; |
|||
type |
|||
MonthLength = Array[1..13] of Integer; |
|||
procedure sund(y : Integer); |
|||
var |
|||
dt : TDateTime; |
|||
m,mm : Integer; |
|||
len : MonthLength; |
|||
begin |
|||
len[1] := 31; len[2] := 28; len[3] := 31; len[4] := 30; |
|||
len[5] := 31; len[6] := 30; len[7] := 31; len[8] := 31; |
|||
len[9] := 30; len[10] := 31; len[11] := 30; len[12] := 31; len[13] := 29; |
|||
for m := 1 to 12 do |
|||
begin |
|||
mm := m; |
|||
if (m = 2) and IsLeapYear( y ) then |
|||
mm := 13; |
|||
dt := EncodeDate( y, mm, len[mm] ); |
|||
dt := EncodeDate( y, mm, len[mm] - DayOfWeek(dt) + 1 ); |
|||
WriteLn(FormatDateTime('YYYY-MM-DD', dt )); |
|||
end; |
|||
end; |
|||
var |
|||
i : integer; |
|||
yy: integer; |
|||
begin |
|||
for i := 1 to paramCount() do begin |
|||
Val( paramStr(1), yy ); |
|||
sund( yy ); |
|||
end; |
|||
end. |
|||
</lang> |
|||
{{out}} |
|||
<pre> |
|||
./sundays 2025 |
|||
2025-01-26 |
|||
2025-02-23 |
|||
2025-03-30 |
|||
2025-04-27 |
|||
2025-05-25 |
|||
2025-06-29 |
|||
2025-07-27 |
|||
2025-08-31 |
|||
2025-09-28 |
|||
2025-10-26 |
|||
2025-11-30 |
|||
2025-12-28 |
|||
</pre> |
|||
=={{header|Frink}}== |
=={{header|Frink}}== |