PDA

View Full Version : Thuật toán doomsday ! Nhưng không biết xài ! Xin chỉ giáo



karenshii
22-04-2011, 13:03
cho trước hai số tự nhiên N và Year. Year là số năm dương lịch cần tính toán. Hãy
viết chương trình tính xem trong năm Year, ngày thứ N tính từ đầu năm sẽ là ngày thứ mấy.

Ai viết chương trình thử - mình đang cay cú

HGMinh95
22-04-2011, 18:40
uses crt;
var year, n, i: word;
d: longint;
begin
d:=0; clrscr;
write(' Nhap year, n: '); readln(year,n);

for i:=1 to year-1 do
if (i mod 4 = 0) then
if (i mod 100 = 0) and (i mod 400 <> 0) then
d:=d+365
else d:=d+366
else d:=d+365;
d:=d+n;

case d mod 7 of
0:write(' chu nhat');
1:write(' thu hai');
2:write(' thu ba');
3:write(' thu tu');
4:write(' thu nam');
5:write(' thu sau');
6:write(' thu bay');
end;
readln
end.
Doomsday là gì vậy bạn

karenshii
22-04-2011, 21:37
doomsday là cái thuật toán tính ngày 28/2 (29/2) là thứ mấy ! Cái chương trình của bạn mình test năm 2008 ngày 29/2(tức ngày thứ 60) nó ra ngày thứ 7 . còn trong tập lịch vạn niên nhà mình là thứ 6 . Các ngày trong năm 2008 hình như trễ 1 ngày .

[=========> Bổ sung bài viết <=========]





uses crt;
var year, n, i: word;
d: longint;
begin
d:=0; clrscr;
write(' Nhap year, n: '); readln(year,n);

for i:=1 to year do
if (i mod 4 = 0) then
if (i mod 100 = 0) and (i mod 400 <> 0) then
d:=d+365
else d:=d+366
else d:=d+365;
d:=d+n-1;

case d mod 7 of
0:write(' chu nhat');
1:write(' thu hai');
2:write(' thu ba');
3:write(' thu tu');
4:write(' thu nam');
5:write(' thu sau');
6:write(' thu bay');
end;
readln
end.
Doomsday là gì vậy bạn

cái phần tính toán for i:= 1 to year...... mình không hiểu sao lại vậy ! bạn giảng giải cho mình với ! cảm ơn nhiều !

[=========> Bổ sung bài viết <=========]

bạn à ! tất cả các năm nhuận đều bị sớm lên 1 ngày ! Sửa lại thì dễ nhưng mình chả hiểu bản chất vấn đề !

HGMinh95
23-04-2011, 10:37
cái phần tính toán for i:= 1 to year...... mình không hiểu sao lại vậy ! bạn giảng giải cho mình với ! cảm ơn nhiều !
Cứ 4 năm có 1 năm nhuận nhưng những năm tròn trăm mà ko chia hết cho 400 thì cũng không phải năm nhuận

Mình sửa lại rồi đấy.