Đến nội dung

Hình ảnh

Bài này rất hay mọi người giải giúp

- - - - -

  • Please log in to reply
Chủ đề này có 5 trả lời

#1
chocuong21

chocuong21

    Lính mới

  • Thành viên
  • 7 Bài viết
Input: Nhập vào ngày, tháng, năm bất kỳ.
output: In ra ngày, tháng. năm đó tương ứng với thứ mấy.
Viết bằng Pấcl ấy, giải thích thuật toán mà bạn sử dụng luôn nhá!

#2
math_galois

math_galois

    Sĩ quan

  • Thành viên
  • 313 Bài viết
bài này bạn phải có 1 ngày cố định là thứ mấy mới làm đc chứ. Thuật toán là bạn tính coi ngày đó là ngày thứ mấy của năm (vd: 1/2 là ngày thứ 32 của năm) rồi đem chia 7 dư bao nhiu đem so với ngày cố định :geq ra đc ngày đó là thứ mấy

Bài viết đã được chỉnh sửa nội dung bởi math_galois: 09-12-2007 - 18:01


#3
quanghoa

quanghoa

    Sĩ quan

  • Thành viên
  • 364 Bài viết
Không khó nhỉ
#include<stdio.h>
int songaydenthang&#91;&#93;={0,0,31,59,90,120,151,181,212,243,273,304,334,365};
char *thu&#91;&#93;={&#34;Thu hai&#34;,&#34;Thu ba&#34;,&#34;Thu tu&#34;,&#34;Thu nam&#34;,&#34;Thu sau&#34;,&#34;Thu bay&#34;,&#34;Chu nhat&#34;};
int nhuan&#40;int nam&#41;{
	return &#40;nam%4&#41;?0&#58;&#40;nam%100&#41;?&#40;nam%400&#41;?0&#58;1&#58;1;
}
int chenhlech&#40;int ngay,int thang,int nam&#41;{
	int temp=ngay+songaydenthang&#91;thang&#93;+&#40;nam-1&#41;;
	temp+=&#40;nam-1&#41;/4-3*nam/400;
	if&#40;nhuan&#40;nam&#41;&&&#40;thang>2&#41;&#41;temp++;
	return &#40;temp-1&#41;%7;
}
void main&#40;&#41;{
	puts&#40;thu&#91;chenhlech&#40;i,5,2009&#41;&#93;&#41;;
}

- Quan trọng là tính xem từ ngày cần tính đến 1 ngày làm mốc (tui chọn ngày 1/1/1, nhưng trong thực tế trên máy tính thì người ta chọn 1/1/1900 cho dễ)
-Mảng tháng cho biết từ ngày 1/1 đến ngày 1/tháng đã trải qua thời gian bao nhiêu
-Dòng
int temp=ngay+songaydenthang&#91;thang&#93;+&#40;nam-1&#41;*&#40;365%7&#41;;
tính từ ngày 1/1/1 đến ngày cần tính đã trải qua bao nhiêu ngày nếu không có luật năm nhuận
-Dòng
temp+=&#40;nam-1&#41;/4-3*nam/400;
tính cộng thêm số ngày nhuận, cụ thể là từ số năm ta tính được số năm nhuận giửa 2 mốc thời gian. Xem luật số nhuận thì sẻ rỏ thôi mà :geq
-Dòng
if&#40;nhuan&#40;nam&#41;&&&#40;thang>2&#41;&#41;temp++;
xét luật về năm nhuận cho năm hiện tại

Bài viết đã được chỉnh sửa nội dung bởi quanghoa: 06-05-2009 - 21:24

Hình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửi

#4
muctieu-5

muctieu-5

    Trung sĩ

  • Thành viên
  • 113 Bài viết
có công thức này:
$s=n+[\dfrac{n-1}{400}]-[\dfrac{n-1}{100}]+[\dfrac{n-1}{4}]+x$
x là số thứ tự của ngày đó trong năm
thứ=s%7 (số dư khi chia s cho 7)(quên cách viết trong Pascal rồi, nhớ mỗi C,C++)

#5
quanghoa

quanghoa

    Sĩ quan

  • Thành viên
  • 364 Bài viết

có công thức này:
$s=n+[\dfrac{n-1}{400}]-[\dfrac{n-1}{100}]+[\dfrac{n-1}{4}]+x$
x là số thứ tự của ngày đó trong năm
thứ=s%7 (số dư khi chia s cho 7)(quên cách viết trong Pascal rồi, nhớ mỗi C,C++)

Một phần của cái trên kia tui làm. (Trong PASCAL là s mod 7 :geq )
Hình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửi

#6
quanghoa

quanghoa

    Sĩ quan

  • Thành viên
  • 364 Bài viết
Tiếp tục luận, có công thức ngắn này
$
thu=ngay+2*thang+3 \dfrac{thang+1}{5} +nam+ \dfrac{nam}{4} +1-3* \dfrac{nam}{400};
$
sau đó chia lấy dư cho 7
Hiểu không, không à, tui cũng không hiểu, :geq Vớ đựoc trên mạng thôi, à chỉnh lại chút
Hình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửiHình đã gửi




1 người đang xem chủ đề

0 thành viên, 1 khách, 0 thành viên ẩn danh