Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Xác định thứ mấy theo ngày tháng năm

  1. #1
    Ngày gia nhập
    01 2009
    Bài viết
    7

    Mặc định Xác định thứ mấy theo ngày tháng năm

    bài toán :nhập vào ngày tháng năm từ bàn phím,in ra màn hình thứ mấy.
    Minh chẳng hiểu thuật toán ở đây là gì,các bạn giúp mình với nhé
    Đã được chỉnh sửa lần cuối bởi nguyenkhoabk : 13-02-2009 lúc 01:36 AM. Lý do: chỉnh lại

  2. #2
    Ngày gia nhập
    11 2007
    Nơi ở
    Hà Nội
    Bài viết
    520

    code đâu,
    có 2 cách để làm
    1 là dùng công thức, cách này nhanh nhưng công thức thì mình quên rồi (để xem lại rồi post sau )
    cách 2 là bạn tính dựa vào 1 ngày đã biết thứ, ví dụ ngày 1/1/2009 là thứ 5 thì ngày(1+7) tháng 1 cũng là thứ năm,
    bạn có thể tính "hiệu" từ ngày cần tính tới ngày 1/1/2009 , %7 và xét số dư
    bạn nhớ xét cả năm nhuận nữa
    ý tưởng là như thế,sau đây là code của mình, hơi dài dòng
    như trong code là ngày 1/1/2004 vì bài tập của mình yêu cầu dựa vào ngày này, bạn có thể sửa lại nhưng cẩn thận về năm nhuận nhé
    C Code:
    1. /*Chuong tring tra lich cua ngay bat ki*/
    2. #include <stdio.h>
    3. #include <conio.h>
    4. int namnhuan(int);
    5. int hople(int,int,int);
    6. main()
    7. {
    8.       int ng,th,nam,h,tn,r,t;
    9.       printf("Chuong tring tra thu cua ngay bat ki\n");
    10.       printf("Nhap ngay thang nam can tra (dd mm yyyy):");
    11.       scanf("%d%d%d%*c",&ng,&th,&nam);
    12.       if(!hople(ng,th,nam))
    13.       {
    14.         printf("Nhap khong hop le. ");getch();return(0);
    15.       }
    16.       else
    17.            { int i;
    18.              for (i=1,t=0;i<th;i++)
    19.              switch(i)
    20.               {case 1:
    21.                case 3:
    22.                case 5:
    23.                case 7:
    24.                case 8:
    25.                case 10:t+=31;break;
    26.                              
    27.                case 4:
    28.                case 6:
    29.                case 9:
    30.                case 11:t+=30;break;
    31.                case 2:t+=28;break;
    32.               };
    33.              t+=ng;
    34.            }
    35.       tn=t;
    36.       h=nam-2004;
    37.       r=h/4;
    38.       if (nam>2004) r++;
    39.       tn+=h*365+r;
    40.       r=(nam-2000)/400;
    41.       tn-=r;
    42.       if (namnhuan(nam)&&(th>2)) tn++;
    43.       if (nam>=2004) r=(tn-1)%7;
    44.         else r=tn%7;
    45.       if(r<0)r+=7;
    46.       printf("Ngay can tra la ");
    47.       switch(r)
    48.         {
    49.           case 0:printf("thu Nam\n");break;
    50.           case 1:printf("thu Sau\n");break;              
    51.           case 2:printf("thu Bay\n");break;
    52.           case 3:printf("Chu Nhat\n");break;
    53.           case 4:printf("thu Hai\n");break;
    54.           case 5:printf("thu Ba\n");break;
    55.           case 6:printf("thu Tu\n");break;
    56.         }
    57.       getch();
    58. }
    59. int namnhuan(int n)
    60.     {
    61.     if (n%400==0) return 1;
    62.     if((n%100!=0)&&(n%4==0)) return 1 ;
    63.     return 0;
    64.     }
    65.  
    66. int hople(int ng,int th,int nam)
    67.     { if (ng==29&&th==2)
    68.         if (namnhuan(nam)) return 1; else return 0;
    69.       else if (ng<1||ng>31|| th<1 ||th>12 ) return 0;
    70.      else
    71.       switch(th)
    72.        { case 2:if(ng>28) return 0;break;
    73.          case 4:
    74.          case 6:
    75.          case 9:
    76.          case 11:if(ng>30) return 0;break;
    77.          default:if(ng>31) return 0;break;
    78.       }
    79.  return 1;
    80.    }
    Đã được chỉnh sửa lần cuối bởi quangnh89 : 13-02-2009 lúc 03:16 PM.

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    1

    Bạn có thể dùng công thức này xem

    A = d + 2m + 3(m+1)/5 + y + y/4 - y/100 + y/400 + 2

    với d/m/y là ngày tháng năm với quy ước tháng 1,2 của năm y được xem là tháng 13, 14 của năm y - 1 (chẳng hạn ngày 23/1/1999 được xem là ngày 23/13/1998). Phép dư của A%7 chính là kết quả của thứ trong tuần. Dư 0: thứ 7; dư 1: chử nhật; dư 2: thứ 2 ...
    ____________________________________________
    Không có người dốt, chỉ có người không biết cố gắng.

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    9

    bài này bạn chỉ sử dụng case...of là dc thui mà. cũng k khó lắm. chắc chắn pải có trong giáo trình học.

Các đề tài tương tự

  1. Cách Tìm Kiếm dữ Liệu SQl theo ngày tháng năm trong C#?
    Gửi bởi duy_quang422 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 8
    Bài viết cuối: 31-07-2013, 06:24 PM
  2. Làm thế nào để lọc được dữ liệu theo tháng và năm?
    Gửi bởi mr.tuannguyen19 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 14
    Bài viết cuối: 06-06-2012, 09:26 AM
  3. Tìm dữ liệu theo ngày tháng năm trong C#
    Gửi bởi chipsnguyen trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 19-09-2011, 08:01 AM
  4. Thống kê bán hàng theo ngày tháng năm
    Gửi bởi atulakokon0777 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 27-07-2011, 11:15 PM
  5. ADO.NET Lỗi thống kê sách mượn theo ngày tháng năm.
    Gửi bởi thanhcong0304 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 20-06-2011, 02:57 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn