Đổi màu giao diện
Truyền thống

Viết chương trình nhập vào ngày tháng năm (dd:mm:yy), cho biết đó là thứ mấy trong tuần.

Thảo luận trong 'Ngôn ngữ lập trình' bắt đầu bởi Gapi Snake, Jan 22, 2008.

  1. Gapi Snake Tân Binh

    Viết chương trình nhập vào ngày tháng năm (dd:mm:yy), cho biết đó là thứ mấy trong tuần. Đề bài đây, cố gắng viết càng ngắn gọn, càng dễ hiểu càng tốt nhé mọi người, nhớ tét kỹ trước khi post lên nhá. Thanks! [​IMG]
  2. loxuanhanh

    loxuanhanh Binh Nhất

    Của bạn đây:



    program datetoday;

    var ngay,thang,nam: integer;

    function date_to_day(ngay,thang,nam:integer):integer;

    var thu:integer;

    mkeys:array[1..12] of integer;

    begin

    mkeys[1]:=1;

    mkeys[2]:=4;

    mkeys[3]:=4;

    mkeys[4]:=0;

    mkeys[5]:=2;

    mkeys[6]:=5;

    mkeys[7]:=0;

    mkeys[8]:=3;

    mkeys[9]:=6;

    mkeys[10]:=1;

    mkeys[11]:=4;

    mkeys[12]:=6;

    thu:= ( nam - 1900 ) + ( nam - 1900 ) div 4 + mkeys[thang] + (ngay-1);

    if(( nam > 1900 ) and ( nam mod 4 = 0 ) and ( thang < 2 ) ) then

    thu:=thu-1;

    thu := thu mod 7;

    date_to_day:= thu;

    end;

    begin

    write('nhap ngay: '); readln(ngay);

    write('nhap thang: '); readln(thang);

    write('nhap nam: '); readln(nam);

    write('Ngay ban nhap nhap la thu: ',date_to_day(ngay,thang,nam));

    readln;

    end.



    Đã test OK
  3. cat123

    cat123 Thiếu Úy

    bạn giải thích dc hok???
  4. loxuanhanh

    loxuanhanh Binh Nhất

    hì thực ra cái này mình search trên mạng của một tên người nước ngoài nào đó rồi đem về vert vert đôi chút. Nhưng khổ nỗi đoạn quan trọng nhất thì lại không hiểu. Còn cái hàm thì chạy OK lắm. Ai bit chỗ này giải thích dùm nha
  5. ReznapSS

    ReznapSS Tân Binh

    cái này viết bằng pascal hả . thế thì chịu , chả biết đâu :D:D:D
  6. nguyenthanh89

    nguyenthanh89 Tân Binh

    viết bằng C++ dễ hơn nhju`
  7. cat123

    cat123 Thiếu Úy

    ai bắt hiểu chương trình lèm gì. hỉu thuật toán thui, rùi share cho anh em.
  8. renaisking

    renaisking Tân Binh

    Trùi, bận làm MOD bên MGV quá nên hem lên BVTH được, giờ lên xem mới thấy mấy anh em gặp rắc rối.



    Thuật toán tính ngày tháng năm chuyển thành ngày trong tuần! Thuật toán này dễ lắm! Nhưng thành thật mà nói thì cái thuật toán trên sai rùi, hem phải thuạật toán chính đâu. Mình là mem mới nên chưa quen với cách viết bài ở đây, thấy kỳ kỳ sao ấy! Thui để mình đánh hướng dẫn, giải thích thuật toán cụ thể rùi upload lên cho! Hẹn mai nhé!
  9. renaisking

    renaisking Tân Binh

    He He, đánh vào file Word rùi copy qua nè:



    Thuật toán chính thức:

    Đây là thuật toán được sử dụng trong lịch vạn niên



    {S = (năm – 1)/1 + [(năm - 1)/4 - (năm - 1)/100] + (năm -1)/400 + Số ngày từ đầu năm đến ngày đó}



    Rùi lấy mod 7 ( là phần nguyên của S)



    S mod 7 = 0 => Chủ Nhật

    S mod 7 = 1 => Thứ Hai

    …..

    S mod 7 = 6 => Thứ Bảy



    VD: 3/5/1990 <-Ngày sinh của tui

    S = (1990 – 1)/1 + [(1990 - 1)/4 - (1990 - 1)/100] + (1990 -1)/400 + 31 + 28 + 31 + 30 + 3 = 2594.3325

    = 2594

    mod 7 = 4 => Ngày thứ Năm! Đúng vậy, mình sinh vào ngày thứ Năm



    Nếu các bạn không tin thì có thể kiểm tra tại : http://www.thoigian.com.vn



    Nếu các bạn thấy mình có thể giúp được nhiều cho các bạn thì hãy đề cử mình làm MOD box này nhé!
  10. cat123

    cat123 Thiếu Úy

    tui bít. nhưng vấn đề đặt ra là tại sao??? tại sao như vậy lại ra dc.
  11. renaisking

    renaisking Tân Binh

    Vấn đề đó là thuật toán chính thức và chính xác nhất! Thuật toán đó được dùng trong các lịch vạn niên!
  12. cat123

    cat123 Thiếu Úy

    ôi trời. cái thuật toán này đọc chả hiểu gì. bạn bít thì giải thích đi. tại sao làm như vậy lại ra kết quả.
  13. thuan1912

    thuan1912 Tân Binh

    Có gì đâu bạn cái thuật toán đó nó nhằm xác định số ngày của khoảng thời gian từ năm 1 tới năm mà bạn muốn xác định thôi trong đó bao gồm cả các ngày của năm nhuần, thuật toán đó rất hay nhưng mình còn thấy vướng ở chỗ là làm sao xác định số ngày từ đầu năm đến ngày cần tính và hình như bạn không nhân cho 365 ngày rồi ko lẽ ngồi đếm ra à ^_^ bác nào có cách thì chỉ mình với

Chia sẻ trang này