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

Đề tài: Thuật toán về ngày tháng

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    1

    Mặc định Thuật toán về ngày tháng

    Có 2 bài tập như sau :
    1 Nhập vào 2 mốc thời gian ( bao gồm ngày tháng năm ) . Tính số ngày giữa 2 mốc thòi gian đó
    2 Nhập vào ngày tháng năm và thứ . Xem trong tháng đó có bao nhiêu ngày chủ nhật
    Có bro nào biết thuật toán để làm 2 bài này ko?

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

    Trích dẫn Nguyên bản được gửi bởi htk_bk53 Xem bài viết
    1 Nhập vào 2 mốc thời gian ( bao gồm ngày tháng năm ) . Tính số ngày giữa 2 mốc thòi gian đó
    bài này mình làm cách dài mà chắc ăn là tính số thứ tự của ngày thứ 1 kể từ ngày 1/1/1 & số thứ tự của ngày 2 cũng từ mốc 1/1/1, sau đó lấy 2 số vừa tìm trừ đi cho nhau (trị tuyệt đối) là ra
    còn bài 2 thì chưa nghĩ ra vì có thêm yếu tố thứ

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Sẵn code bài 1 bằng C++ trước làm, share luôn cho bạn
    Thuật toán không có gì cả, H cứ tính hiệu trực tiếp thôi.
    C++ Code:
    1. /* Tinh so ngay nam giua 2 moc thoi gian*/
    2. #include <iostream>
    3. #include <cstdio>
    4. using namespace std;
    5.  
    6. void EnterDate(int &date, int &month, int &year);
    7. //int TestDate();
    8. int LeapYear(int year);
    9.  
    10. int main()
    11. {
    12.     int date1, month1, year1;
    13.     cout<<"  - Enter date (dd/mm/yyyy) from: ";
    14.     EnterDate(date1,month1,year1);
    15.     int date2, month2, year2;
    16.     cout<<"  - Enter date (dd/mm/yyyy) to: ";
    17.     EnterDate(date2,month2,year2);
    18.     int dateOfYear=0,dateOfMonth=0, date=0;
    19.  
    20.     /* Tinh khoang cach so ngay giua 2 nam */
    21.     for (int i=year1;i<year2;i++)
    22.         if( LeapYear(i)) dateOfYear+=366;  //////
    23.         else dateOfYear+=365;
    24.  
    25.     /* Tinh khoang cach so ngay giua 2 thang */
    26.     int a[]={31,28,31,30,31,30,31,31,30,31,30,31};
    27.     if ( LeapYear(year2)) a[1]=29;           /////
    28.     if (month1>month2)
    29.     {
    30.         for (int i=month2;i<month1;i++)
    31.             dateOfMonth-=a[i-1];
    32.     }
    33.     else
    34.     {
    35.         for (int i=month1;i<month2;i++)
    36.             dateOfMonth+=a[i-1];
    37.     }
    38.  
    39.     /* Tinh khoang cach giua 2 ngay */
    40.     date=date2-date1+1;       //Ket qua tinh ca ngay cuoi cung
    41.  
    42.     cout<< " -> Result:   " << dateOfYear + dateOfMonth + date;
    43.     cout<<" date.";
    44.     return 0;
    45. }
    46.  
    47. int TestDate(int date, int month, int year)
    48. {
    49.     int a[]={31,28,31,30,31,30,31,31,30,31,30,31};
    50.     if (LeapYear(year)) a[1]=29;
    51.     if (month < 1 || month >12) return 0;
    52.     if (date < 1 || date > a[month-1]) return 0;
    53.     return 1;
    54. }
    55.  
    56. void EnterDate(int &date, int &month, int &year)
    57. {
    58.     //cin>>date>>"/">>month>>"/">>year;
    59.     scanf("%d/%d/%d",&date,&month,&year);
    60.     if (!TestDate(date,month,year))
    61.     {
    62.         cout<<"  - Error, enter agian: ";
    63.         scanf("%d/%d/%d",&date,&month,&year);
    64.     }
    65. }
    66.  
    67. int LeapYear(int year)
    68. {
    69.     if (year % 400==0) return 1;
    70.     else if (year % 100!=0 && year % 4==0) return 1;
    71.     return 0;
    72. }

    Còn bài thứ 2 có một thuật toán H nghĩ là khá dễ dàng như này.

    - Bạn đã nhập thứ và ngày vậy, vd thứ x ngày y thì hằng số y%7 luôn là thứ x (trong tháng đó) chỉ tính ngược một chút bạn sẽ tìm được hằng số y%7 của chủ nhật, duyệt các ngày trong tháng em có bao nhiều ngày thỏa mãn y%7 thì có từng đó chủ nhật.

    VD: hôm nay 09 thứ 2 => tất cả các ngày date % 7 == 2 là thứ 2 => tất cả các ngày date % 7 == 1 là chủ nhật, đó là điều kiện để bạn test đủ 31 ngày của tháng này.

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

  1. Dịch thuật, công ty dịch thuật, dịch vụ dịch thuật chuyên nghiệp
    Gửi bởi vecvn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 4
    Bài viết cuối: 18-11-2012, 10:44 PM
  2. Dịch vụ kế toán: Báo cáo thuế, dịch vụ tư vấn thuế, báo cáo thuế tncn vnnp
    Gửi bởi ecomvnnp01 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 16-02-2012, 11:07 AM
  3. Bài tập C++ Viết chương trình nhập số lượng hàng hóa, giá cả, thuế, xuất ra tổng giá, thuế, tổng cộng
    Gửi bởi seit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 04-03-2011, 09:04 AM
  4. Hướng dẫn kê khai thuế thu nhập cá nhân, thuế doanh nghiệp 0903034381
    Gửi bởi thngxanhcty trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 19-05-2010, 02:33 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