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

Đề tài: Công thức chuyển năm dương lịch sang âm lịch?

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

    Unhappy Công thức chuyển năm dương lịch sang âm lịch?

    như tiêu đề, mọi người giúp giùm em bài này: chương trình nhập năm dương lịch, xuất ra năm âm lịch
    vi dụ nhập năm 1968 thì xuất ra là NĂM MẬU THÂN, em mới học C# chưa biết gì nhiều, mong mọi người chỉ giáo
    em có tham khảo:
    tÝ+ Sửu Dần Mão Thìn Tỵ NgỌ Mùi Thân Dậu Tuất Hợi
    1 + 2 + 3 +4 +5 +6 +7 +8 +9 +10 +11 +12
    Đó được là gọi là Chi
    Còn CAN được sắp xếp và tên gọi sau
    Giáp Ất Bình Đinh Mậu Kỷ Canh Tân Nhân Quý

    Công thức tính như sau
    Can được tính bằng = (Năm - 4 ) % 10 +1
    Chi xác định bằng = (năm - 4) % 12 +1

    em thấy chưa chính xác lắm, mọi người chỉnh giùm em luôn

  2. #2
    Ngày gia nhập
    11 2008
    Nơi ở
    An Giang
    Bài viết
    502

    - Cách tính Can :
    Canh = 0, Tân = 1, Nhâm = 2, Quý = 3, Giáp = 4, Ất = 5, Bính = 6, Đinh = 7, Mậu = 8, Kỷ = 9.
    //Bạn lấy số đơn vị của năm cần tính rùi đối chiếu với bảng Can.
    - Cách tính Chi:
    Ta có bảng : Tí = 0, Sửu = 1, Dần = 2, Mão = 3, Thìn = 4, Tị = 5, Ngọ = 6, Mùi =7, Thân = 8, Dậu = 9, Tuất = 10, Hợi =11.
    Lấy năm chia cho 12, lấy số dư cộng với 8 (nếu lớn hơn 12 thì trừ đi 12) rồi đối chiếu với bảng Chi.

    Ví dụ: Ta có năm 1968. Vậy số đơn vị là 8 => Mậu.
    1968 chia lấy phần dư là 0 + 8 = 8 => Thân
    ==> 1968 có năm âm lịch tương ứng là Mậu Thân.
    p/s: Bạn có thể sử dụng Switch trong C# để thực hiện. Cách tính tham khảo trên nhiều nguồn trên mạng rùi mình tổng hợp lại cách tính như thế

  3. #3
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Visual C# Code:
    1. // đoạn code đổi năm thành tên gọi trong âm lịch
    2. // dựa trên mốc 1968 = "Mậu Thân" (theo đúng đề bài)
    3.  
    4. const int NAMMOC = 1968; // năm mốc
    5. int namDC = (NAMMOC / 60 + 1) * 60 - NAMMOC; // số điều chỉnh để phù hợp với năm mốc
    6. // lưu ý: không giản dị hóa (NAMMOC / 60 + 1) * 60  - NAMMOC = 60 được
    7. // vì con toán NAMMOC/60 cắt bỏ số lẻ thập phân
    8. string [] chi = { "Thân", "Dậu", "Tuất", "Hợi", "Tý", "Sửu", "Dần", "Mẹo", "Thìn", "Tỵ", "Ngọ", "Mùi" };
    9. string [] can = { "Mậu", "Kỷ", "Canh", "Tân", "Nhâm", "Quý", "Giáp", "Ất", "Bính", "Đinh" };
    10. int nam = 2012;
    11. string namAmLich = can[(nam + namDC) % 10] + " " + chi[(nam + namDC) % 12];
    12. // namAmLich có trị là "Nhâm Thìn"
    13.  
    14.  
    15. // đoạn code đổi năm thành tên gọi trong âm lịch
    16. // dựa trên mốc năm 0 = "Canh Thân" (giản dị hóa đề bài)
    17.  
    18. string[] chi = { "Thân", "Dậu", "Tuất", "Hợi", "Tý", "Sửu", "Dần", "Mẹo", "Thìn", "Tỵ", "Ngọ", "Mùi" };
    19. string[] can = { "Canh", "Tân", "Nhâm", "Quý", "Giáp", "Ất", "Bính", "Đinh", "Mậu", "Kỷ" };
    20. int nam = 2012;
    21. string namAmLich = can[nam % 10] + " " + chi[nam % 12];
    22. // namAmLich có trị là "Nhâm Thìn"

  4. #4
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    1. đơn giản nhất có thể dùng năm mốc như VoTichSu đã post
    2. dùng cách tổng quát, ko cần mốc. ---> tối mình sẽ post (đi làm ko mang laptop)

  5. #5
    Ngày gia nhập
    02 2012
    Bài viết
    10

    Trích dẫn Nguyên bản được gửi bởi zstar Xem bài viết
    1. đơn giản nhất có thể dùng năm mốc như VoTichSu đã post
    2. dùng cách tổng quát, ko cần mốc. ---> tối mình sẽ post (đi làm ko mang laptop)
    cám ơn anh rất nhiều

    Trích dẫn Nguyên bản được gửi bởi VoTichSu Xem bài viết
    Visual C# Code:
    1. // đoạn code đổi năm thành tên gọi trong âm lịch
    2. // dựa trên mốc 1968 = "Mậu Thân" (theo đúng đề bài)
    3.  
    4. const int NAMMOC = 1968; // năm mốc
    5. int namDC = (NAMMOC / 60 + 1) * 60 - NAMMOC; // số điều chỉnh để phù hợp với năm mốc
    6. // lưu ý: không giản dị hóa (NAMMOC / 60 + 1) * 60  - NAMMOC = 60 được
    7. // vì con toán NAMMOC/60 cắt bỏ số lẻ thập phân
    8. string [] chi = { "Thân", "Dậu", "Tuất", "Hợi", "Tý", "Sửu", "Dần", "Mẹo", "Thìn", "Tỵ", "Ngọ", "Mùi" };
    9. string [] can = { "Mậu", "Kỷ", "Canh", "Tân", "Nhâm", "Quý", "Giáp", "Ất", "Bính", "Đinh" };
    10. int nam = 2012;
    11. string namAmLich = can[(nam + namDC) % 10] + " " + chi[(nam + namDC) % 12];
    12. // namAmLich có trị là "Nhâm Thìn"
    13.  
    14.  
    15. // đoạn code đổi năm thành tên gọi trong âm lịch
    16. // dựa trên mốc năm 0 = "Canh Thân" (giản dị hóa đề bài)
    17.  
    18. string[] chi = { "Thân", "Dậu", "Tuất", "Hợi", "Tý", "Sửu", "Dần", "Mẹo", "Thìn", "Tỵ", "Ngọ", "Mùi" };
    19. string[] can = { "Canh", "Tân", "Nhâm", "Quý", "Giáp", "Ất", "Bính", "Đinh", "Mậu", "Kỷ" };
    20. int nam = 2012;
    21. string namAmLich = can[nam % 10] + " " + chi[nam % 12];
    22. // namAmLich có trị là "Nhâm Thìn"
    cám ơn anh đã cho code, giúp em ngộ ra được nhiều điều, 1 lần nữa rất cám ơn

  6. #6
    Ngày gia nhập
    10 2008
    Bài viết
    54

    Mặc định Công thức chuyển năm dương lịch sang âm lịch?

    Trích dẫn Nguyên bản được gửi bởi zstar Xem bài viết
    2. dùng cách tổng quát, ko cần mốc. ---> tối mình sẽ post (đi làm ko mang laptop)
    Cách tổng quát à. Hình như cũng dùng năm mốc là 1900 mà bạn

  7. #7
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    code cách của mình đây
    Java Code:
    1. public static String[] can = new String[]{"Giáp", "Ất", "Bính", "Đinh", "Mậu", "Kỷ", "Canh", "Tân", "Nhâm", "Quý"};
    2. public static String[] chi = new String[]{"Tí", "Sửu", "Dần", "Mão", "Thìn", "Tỵ", "Ngọ", "Mùi", "Thân", "Dậu", "Tuất", "Hợi"};
    3. public static String getCanChiYear(int year) {
    4.      int sodu_can = (year + 6) % 10;
    5.      int sodu_chi = (year + 8) % 12;
    6.      return can[sodu_can] + " " + chi[sodu_chi];
    7. }
    mình dùng cái này hàm này để làm 2cái ứng dụng này
    lịch vạn niên - J2ME, android
    http://mbin.vn/free/detail.jsp?id=74
    https://market.android.com/details?i...2FubGVuZGFyIl0.

  8. #8
    Ngày gia nhập
    05 2011
    Nơi ở
    Hanoi, Vietnam, Vietnam
    Bài viết
    114

    chỉ với 1 nốt nhạc
    Visual C# Code:
    1. Console.Write("Nhap nam:");
    2.             int nam = Int32.Parse(Console.ReadLine());
    3.             string[] strCan = { "Canh", "Tan", "Nham", "Quy", "Giap", "At", "Binh", "Dinh", "Mau", "Ky"};
    4.             string[] strChi = { "Than", "Dau", "Tuat", "Hoi", "Ty", "Suu", "Dan", "Mao", "Thin", "Ti", "Ngo", "Mui"};
    5.             Console.Write("\nNam {0} la :{1} {2}", nam, strCan[nam % 10], strChi[nam % 12]);
    6.             Console.ReadLine();
    Tôi đi không nhanh nhưng không bao giờ lùi

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

  1. Lập trình C++ Chuyển từ chuyển từ trung tố sang hậu tố và tính biểu thức hậu tố N chữ số như thế nào?
    Gửi bởi Chopper 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: 22-08-2012, 09:48 PM
  2. Giải thuật chuyển số giây sang giờ/phút/giây - ngày/tháng/năm
    Gửi bởi SVPro trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 31-05-2012, 10:51 PM
  3. Lỗi ko chuyển từ Source sang design đc(khi chuyển thì bị đơ luôn) ?
    Gửi bởi tan408 trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 5
    Bài viết cuối: 23-04-2011, 07:36 AM
  4. ADO.NET Chuyể Phần mềm QLNS sang Ngôn ngữ Dynamic Programming. Ai chuyển giúp mình!?
    Gửi bởi huynhanhton trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 03-04-2011, 11:41 PM
  5. Chuyển một số sang chuỗi | Chuyển 1 số sang xâu ?
    Gửi bởi xuanhung_cntt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 03-05-2009, 11:48 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