Hỏi ý tưởng bài toán xuất thứ trong tuần

Hi mọi người!
Mình có bài toán thế này: 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?
Cho mình xin ý tưởng để giải bài toán này bằng ngôn ngữ C được không ạ?

AI ngày một tiến bộ nên những “lập trình viên” hạ cấp, không biết HỌC và HỎI sẽ dần bị đào thải.

Ví dụ với COBOL:

IDENTIFICATION DIVISION.
PROGRAM-ID. DAY-OF-WEEK.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 DAY PIC 99.
01 MONTH PIC 99.
01 YEAR PIC 99.
01 DAY-OF-WEEK PIC X(9).
PROCEDURE DIVISION.
    DISPLAY "Enter the date (dd:mm:yy): ".
    ACCEPT DAY, MONTH, YEAR.
    IF MONTH < 1 OR MONTH > 12 OR DAY < 1 OR DAY > 31 OR YEAR < 0 OR YEAR > 99
        DISPLAY "Invalid date. Please enter a valid date.".
        STOP RUN.
    END-IF.
    COMPUTE DAY-OF-WEEK = FUNCTION DAY-OF-WEEK (DAY, MONTH, YEAR).
    DISPLAY "The day of the week is: ", DAY-OF-WEEK.
    STOP RUN.
FUNCTION DAY-OF-WEEK (D, M, Y)
    COMPUTE DAY-OF-WEEK = (D + ((13 * (M + 12 * ((14 - M) / 12) - 2)) / 5) + Y + (Y / 4) - (Y / 100) + (Y / 400)) MOD 7.
END FUNCTION.

Ví dụ khác dùng x86 assembly language

section .data
    prompt db 'Enter date (dd:mm:yy): ', 0
    format db '%d:%d:%d', 0
    days db 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'

section .bss
    day resb 4
    month resb 4
    year resb 4

section .text
    global _start

_start:
    ; display prompt and read input
    mov eax, 4
    mov ebx, 1
    mov ecx, prompt
    mov edx, 22
    int 0x80
    mov eax, 3
    mov ebx, 0
    mov ecx, format
    mov edx, day
    int 0x80
    mov eax, [day]
    mov [day], eax
    mov eax, 3
    mov ebx, 0
    mov ecx, format+2
    mov edx, month
    int 0x80
    mov eax, [month]
    mov [month], eax
    mov eax, 3
    mov ebx, 0
    mov ecx, format+4
    mov edx, year
    int 0x80
    mov eax, [year]
    mov [year], eax
    
    ; convert month and year to MJD
    mov eax, [month]
    sub eax, 3
    cmp eax, 0
    jl .add12
    add eax, 12
.add12:
    mov ebx, [year]
    sub ebx, 1900
    mov ecx, 1461
    mul ebx
    shr eax, 2
    add eax, [day]
    sub eax, 32075
    add eax, ecx
    mov ebx, 7
    xor edx, edx
    div ebx
    mov ecx, eax
    mov eax, 4
    mul ecx
    sub eax, 2
    shr ebx, 1
    sub eax, ebx
    add eax, ecx
    add eax, [year]
    add eax, [year] / 4
    
    ; calculate day of the week
    mov ebx, 7
    xor edx, edx
    div ebx
    mov ebx, eax
    mov eax, days
    mov edx, [ebx]
    add eax, edx
    
    ; output day of the week
    mov ebx, 1
    mov ecx, eax
    mov edx, 9
    int 0x80
    
    ; exit program
    mov eax, 1
    xor ebx, ebx
    int 0x80
5 Likes

Ý bạn là mình là LTV hạ cấp hả?

Chứ còn gì nữa bạn, bài toán này search google ra ngay link thứ 2, và đó cũng là daynhauhoc Nhập vào ngày tháng năm cho biết đó là thứ mấy trong tuần

1 Like

Mình chỉ hỏi về ý tưởng thôi mà các bạn DHN nói gắt quá. Ở trên facebook hỏi 1 câu người ta trả lời nhiệt tình lắm. Mình xin rời khỏi DNH và ko bao giờ đặt câu hỏi ở đây nữa!

Chán nhỉ, Daynhauhoc mà lại so sánh với facebook, bạn không phân biệt được forum với cái chợ chat chit rồi.
Mình nhớ đã trả lời bạn 1 lần tại topic này rồi
Vấn đề kết nối database của private server
superthin cũng đã căng

Tại topic này


kisuluoibieng cũng đã căng

Bạn nên xem lại tại sao ai cũng bực mình khi đọc câu hỏi của bạn

2 Likes

Bạn ko là ltv hạ cấp.
Cũng ko có ai có quyền đánh giá bạn.

Nhưng thay vì tự mình khẳng định như v, sao k chứng minh hay tự mình khẳng định lại bằng hành động.

Cho dù câu trl của cmt đầu tiên có hơi toxic thật. Nhưng trong đó vẫn ẩn chứa lời giải, trừ khi bạn chưa từng đọc qua code của người ta mà chỉ chăm chăm vào việc bạn bị xúc phạm.

Nếu để ý code mà bạn kia show lên, có func để tính ngày trong tuần r đó. Công thức gì mà cộng dài ngoằng kìa rồi mod 7 đó.

Giả dụ đó là công thức cố tình biến tấu cho bạn khó hiểu, thì tên hàm có đó, nhìn vào những phép toán trong đó, cũng đủ để thấy đc ý tưởng r chứ nhỉ?

Với lại mình cũng xin nói thẳng, nhiều mem cũ cứ tưởng thấy mem mới thì lại hùa nhau vào bắt bẻ là hay. Hay ho gì, phải hướng dẫn sao cho ng ta tự hiểu ra, ai bắt các bạn phải chỉ tận răng đâu? Ko đủ khả năng dẫn dắt ng ta thì để ng khác hướng dẫn.

Tên forum vẫn đó, chứ có phải đổi đi đâu. Dạy nhau học cũng đâu phải là dạy mỗi lập trình, dạy cho ng ta cách hỏi, dạy cho ng ta cách tự tìm lời giải. Không phải là dạy à? Mà cứ phải nói chuyện kiểu toxic. Hỏi xem có mấy ai tận tình chỉ dẫn mem mới khi mà ng ta chưa biết cái gì được như anh @tntxtnt?

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?