đề bài là: nhập vào ngày tháng năm cho biết đó là thứ mấy trong tuần? Show tháng 2 có năm nhuận là 28 hoặc 29 ngày, và 1,3,5,7,8,10,12 có 31 ngày và 4 ,6,9,11 có 30 ngày đặt ra lý luận thế nào cho ổn để tính, mong các cao nhân chỉ giáo! thanks trân trọng!
Google “day of the date”.
C#, ngôn ngữ cho người lười: 9,10,11/4/2017 1 Like
Ặc! muốn tính chính xác, bạn lập thế thì chịu, mình ko hiểu!
Còn về mặt thuật toán
1 Like
bạn thử code giúp mình bằng C dùng câu điều kiện? thanks ban
Bạn có thể chỉ mình cách tính số ngày kể từ 1/1/1990 dc ko?
Mình không biết viết code C Để tính số ngày kể từ 01/01/0001 cho nó nhiều nhé :)) (01/01/0001 được gọi là “The world birthday” Đầu tiên bạn viết hàm tính số ngày trong năm, ví dụ noz == 2017 thì SoNgayTrongNam(noz) == 365: int SoNgayTrongNam(int Year) { int DayOfThisYear = 0; //... //Bạn tự viết hàm này nhé, lý thuyết về năm thường và năm nhuận thôi //... return DayOfThisYear; }Tiếp theo bạn viết hàm tính số ngày trước năm cần tính (ví dụ cần tính ngày 14/4/1995, hàm này tính số ngày kể từ 01/01/0001 đến hết 31/12/1994) int SoNgayTruocNam(int Year) { int TongSoNgayTruoc = 0; for (int i = 0; i < Year; i += 1) TongSoNgayTruoc += SoNgayTrongNam(i); return TongSoNgayTruoc; }Tiếp theo, bạn viết hàm tính số ngày kể từ đầu năm int SoNgayKeTuDauNam(int Year) { int SoNgay = 0; //... //Hàm này bạn cũng gắng tự viết :)) //... return SoNgay; }Cuối cùng cộng 2 thằng đó lại là ra số ngày kể từ 01/01/0000, gọi nó là int ahjhj nhé. Biết 31/12/0000 là Chủ Nhật. Xét ngày 01/01/0001 là Thứ Hai thì ahjhj == 1 => ahjhj % 7 == 1 => Nếu ahjhj % 7 == 1 thì ngày đang xét là Thứ Hai, ahjhj % 7 == 2 thì ngày đang xét là Thứ Ba,…, ahjhj % 7 == 6 thì ngày đang xét là Thứ Bảy, ahjhj % 7 == 0 thì ngày đang xét là Chủ Nhật. 1 Like
Full code C# :)) bool LaNamNhuan(int Nam) { if (Nam % 4 != 0) return false; if (Nam % 100 != 0) return true; if (Nam % 400 != 0) return false; return true; } int SoNgayTrongNam(int Nam) { if (LaNamNhuan(Nam)) return 366; return (365); } int SoNgayTruocNam(int Nam) { int TongSoNgayTruoc = 0; for (int i = 1; i < Nam; i += 1) TongSoNgayTruoc += SoNgayTrongNam(i); return TongSoNgayTruoc; } int SoNgayTrongThang(int Nam, int Thang) { switch (Thang) { case 4: case 6: case 9: case 11: return 30; case 2: { if (LaNamNhuan(Nam)) return 29; return 28; } default: return 31; } } int SoNgayTruocThang(int Nam, int Thang) { var SoNgay=0; for (int i = 1; i < Thang; i += 1) SoNgay += SoNgayTrongThang(Nam, i); return SoNgay; } int TongSoNgay(int Nam, int Thang, int Ngay) { return SoNgayTruocNam(Nam) + SoNgayTruocThang(Nam, Thang) + Ngay; } string NgayTrongTuan(int Nam, int Thang, int Ngay) { switch (TongSoNgay(Nam,Thang,Ngay)%7) { case 0: return "Chu nhat"; case 1: return "Thu hai"; case 2: return "Thu ba"; case 3: return "Thu tu"; case 4: return "Thu nam"; case 5: return "Thu sau"; default: return "Thu bay"; } }2 Likes
Có sẵn thuật toán để tính cái này, bạn có thể dễ dàng tìm thấy trên daynhauhoc (mình muốn nhấn mạnh chỗ ‘dễ dàng’). Mình code lại dựa trên thuật toán đó, việc kiểm tra những gì người dùng nhập vào thì không phải việc của mình nên mình không làm nha Đoạn code sử dụng switch-case nhưng do nó quá dài nên mình chuyển nó sang mảng, chắc là hơi nguy hiểm tí khi không kiểm tra xem phần tử có chỉ số nằm trong khoảng an toàn hay không
Cách tính thứ khi biết ngày tháng năm như nào? Bạn có biết bằng cách nào các ứng dụng lịch có thể xác định thứ của các ngày từ quá khứ tới tương lai tít tắp như vậy không? Bởi vì chúng ta có thể tính toán được việc đó. Bây giờ bạn có một bài tập C/C++ như sau: Hãy nhập vào ngày tháng năm, in ra hôm đó là thứ mấy? Hãy cùng Nguyễn Văn Hiếu Blog đi giải quyết bài tập này nhé. 1. Bài toán tính thứ khi biết ngày tháng nămTrong cuộc sống tất bật, chúng ta thường xuyên phải xác định ngày hôm nay là thứ mấy trong tuần. Chẳng hạn như, kiểm tra sinh nhật của thằng bạn rơi vào thứ mấy? Hay thực tế hơn, bạn có một ứng dụng muốn hiện thị đầy đủ thông tin thời gian… Và lý do hợp lý nhất, bạn muốn biết bằng cách nào có thể xác định thứ mấy khi biết ngày tháng năm. Không dài dòng nữa, chúng ta sẽ cùng đi thẳng vào vấn đề nhé. 2. Tính thứ khi biết ngày tháng năm như nào?Để xây dựng một chương trình tính thứ cho biết trước ngày tháng năm, chúng ta cần thực hiện các công việc tuần tự như sau:
Dưới đây là code trên ngôn ngữ C/C++ thực hiện tính thứ khi biết ngày tháng năm. Các bạn có thể dùng tham khảo:
Output:
3. Giải thích chương trìnhcheck_year, check_month, check_day là các hàm giúp chúng ta kiểm tra năm, tháng, ngày của người dùng nhập vào có hợp lệ hay không. Nếu không hợp lệ, chúng ta sẽ dừng chương trình. Ngược lại, nếu hợp lệ chúng ta tiếp tục. check_leap_year là hàm kiểm tra một năm có phải năm nhuận không? Hàm get_day sẽ giúp chúng ta tính toán chính xác ngày tháng năm đó là thứ mấy. Công thức dưới đây dựa trên Julian Day Calculation
Sau khi thực hiện tính với công thức này, chúng ta sẽ thu được ngày của tuần ở dạng số. Hi vọng bài chia sẻ hữu ích với các bạn, chúc các bạn học tốt! |