Trang chủ Tin Học Lớp 8 code C++ Giả sử hôm này là ngày d tháng t năm n. Hỏi ngày mai là ngày mấy? INPUT:...
Câu hỏi :

code C++ Giả sử hôm này là ngày d tháng t năm n. Hỏi ngày mai là ngày mấy? INPUT: - Gồm 3 số d, t, n cách nhau một khoảng trắng biểu thị cho ngày, tháng, năm (1 d 31, 1 t 12, 0 n 9999). - Dữ liệu cho đảm bảo là một ngày hợp lệ (Ví dụ ngày không hợp lệ: 31 2 2014) OUTPUT - In ra ngày, tháng, năm của ngày tiếp theo, mỗi số cách nhau một khoảng trắng. Không in số 0 ở đầu ngày và tháng. - Cần chú ý năm nhuận tháng 2 có 29 ngày, năm nhuận là: (năm chia hết cho 400) hoặc (chia hết cho 4 và không chia hết cho 100)

Lời giải 1 :

#include <iostream>
using namespace std;

int main() {
    int d, t, n; //khai triển d, t, n là những con số nguyên
    cout << "Lần lượt nhập vào ngày d tháng t năm n:" << endl; //in ra màn hình thông báo nhập vào ngày d tháng t năm n
    cout << "d "; //ngày
    cin >> d; //nhập vào ngày
    cout << "t "; // tháng
    cin >> t; //nhập vào tháng
    cout << "n "; // năm

    cin >> n; // nhập vào tháng

    //kiểm tra ngày tháng năm vừa nhập
    if (n >= 0 && n <= 9999) { //nếu ngày từ 1 đến 31 và tháng từ 1 đến 12 và năm từ 0 đến 9999
        if (n % 400 == 0) { //nếu là năm nhuận
            if (t >= 1 && t <= 12) { //nếu tháng từ 1 đến 12
                if (d >= 1 && d <= 31) { //nếu ngày từ 1 đến 31
                    if (t <= 7 && t%2 == 0) { //trong trường hợp từ tháng 1 đến 7 và tháng chẵn
                        if (t == 2) { //đặc biệt: nếu là tháng 2
                            if (d > 29) { //trong tháng 2 nếu ngày lớn hơn 29
                            cout << "Ngày không hợp lệ";//nếu điều kiện trên đúng sẽ in ra dòng này
                            exit(0);//kết thúc chương trình
                            }
                        } else if (d > 30) { //nếu trong tháng chẵn: 4 6, kiểm tra ngày có lớn hơn 30 không (tháng 2 đã được xét trong điều kiện ở trên, và nếu điều kiện trên đúng thì điều kiện này sẽ không được xét, nếu chưa đúng thì chắc chắn là tháng đã nhập không phải là tháng 2)
                            cout << "Ngày không hợp lệ";
                            exit (0);
                        }
                    } else if ( t >= 8 && t%2 != 0) { //trong trường hợp từ tháng 8 đến 12 và tháng lẻ
                        if (d > 30) { //nếu tháng lẻ có ngày > 30
                            cout << "Ngày không hợp lệ";
                            exit (0);
                        }
                    }
                } else {  //nếu ngày từ 1 đến 31 sai
                    cout << "Ngày không hợp lệ";
                    exit(0);
                }
            } else { //nếu tháng từ 1 đến 12 sai
            cout << "Tháng không hợp lệ";
            exit(0);
            }
        } else {  //kiểm tra năm không nhuận (copy i chang ở trên từ dòng 17 cho tới cái dòng thứ 39 rồi sửa đổi 1 xíu)
            if (t >= 1 && t <= 12) { //nếu tháng từ 1 đến 12
                if (d >= 1 && d <= 31) { //nếu ngày từ 1 đến 31
                    if (t <= 7 && t%2 == 0) { //trong trường hợp từ tháng 1 đến 7 và tháng chẵn
                        if (t == 2) { //đặc biệt: nếu là tháng 2
                            if (d > 28) { //trong tháng 2 nếu ngày lớn hơn 28 (chỗ khác với năm nhuận)
                            cout << "Ngày không hợp lệ"; //nếu điều kiện trên đúng sẽ in ra dòng này
                            exit(0); //kết thúc chương trình
                            }
                        } else if (d > 30) { //nếu trong tháng chẵn: 4 6, kiểm tra ngày có lớn hơn 30 không (tháng 2 đã được xét trong điều kiện ở trên, và nếu điều kiện trên đúng thì điều kiện này sẽ không được xét, nếu chưa đúng thì chắc chắn là tháng đã nhập không phải là tháng 2)
                            cout << "Ngày không hợp lệ";
                            exit (0);
                        }
                    } else if ( t >= 8 && t%2 != 0) { //trong trường hợp từ tháng 8 đến 12 và tháng lẻ
                        if (d > 30) { //nếu tháng lẻ có ngày > 30
                            cout << "Ngày không hợp lệ";
                            exit (0);
                        }
                    }
                } else { //nếu ngày từ 1 đến 31 sai
                    cout << "Ngày không hợp lệ";
                    exit(0);
                }
            } else { //nếu tháng từ 1 đến 12 sai
            cout << "Tháng không hợp lệ";
            exit(0);
            }
        }
    } else { //nếu năm n <0 hoặc >9999
        cout << "Năm không hợp lệ";
        exit(0);
    }

//bắt đầu ghi cho ngày tháng năm tiếp theo
    d+=1; //cộng 1 cho ngày d
    if (n % 400 == 0) { //nếu năm nhuận
        if (t <= 7 && t%2 == 0) { //trong trường hợp từ tháng 1 đến 7 và tháng chẵn
            if (t == 2) { //đặc biệt: nếu là tháng 2
                if (d == 30) {  //nếu ngày d đã nhập là 29 (sau khi d+=1 ở dòng 78 thì thành 30)
                    d=1;
                    t+=1;
                }
            } else if (d = 31) {  //nếu trong tháng chẵn: 4 6, kiểm tra ngày có bằng 30 không
                d=1;
                t+=1;
            }
        } else if ( t >= 8 && t%2 != 0) {  //trong trường hợp từ tháng 8 đến 12 và tháng lẻ
            if (d = 31) {  //nếu tháng 9 và 11 có ngày 30 (sau khi d+=1 ở dòng 78 thì thành 31)
                d=1;
                t+=1;
            }
        } else if (t == 12) {  //đặc biệt: nếu là tháng 12
            if (d == 32) {
                d=1;
                t=1;
                n+=1;
            }
        } else if (d == 32) {  //nếu những tháng còn lại là những tháng có ngày 31
            d=1;
            t+=1;
        }
    } else {  //nếu năm không nhuận
        if (t <= 7 && t%2 == 0) { //trong trường hợp từ tháng 1 đến 7 và tháng chẵn
            if (t == 2) {  //đặc biệt: nếu là tháng 2
                if (d == 29) {  //chỗ khác với năm nhuận
                    d=1;
                    t+=1;
                }
            } else if (d = 31) { //nếu trong tháng chẵn: 4 6, kiểm tra ngày có bằng 30 không
                d=1;
                t+=1;
            }
        } else if ( t >= 8 && t%2 != 0) {  //trong trường hợp từ tháng 8 đến 12 và tháng lẻ
            if (d = 31) {  //nếu tháng 9 và 11 có ngày 30 (sau khi d+=1 ở dòng 78 thì thành 31)
                d=1;
                t+=1;
            }
        } else if (t == 12) { //đặc biệt: nếu là tháng 12
            if (d == 32) {
                d=1;
                t=1;
                n+=1;
            }
        } else if (d == 32) { //nếu những tháng còn lại là những tháng có ngày 31
            d=1;
            t+=1;
        }
    }

    cout << endl << d << " " << t << " " << n << endl; // in ra màn hình d t n của ngày tiếp theo
}

****

Code mình thường viết hay bị đồ sộ với phức tạp á ngắn gọn là vậy:
- Đầu tiên code của mình sẽ yêu cầu người dùng nhập vào ngày d tháng t năm n, sau đó sẽ kiểm tra coi ngày tháng năm coi có đúng với thực tế không (năm nhuận, tháng 1 3 5 7 8 10 12,...tương đương với số ngày 30 31 28 và 29)

- Sau đó mình sẽ + 1 vào ngày d, kiểm tra coi số ngày có phải là số ngày 28 29 30 hay 31 tương đương với các tháng cũng như năm coi có cần +1 vào t hay +1 vào n không, nhưng vẫn cố gắng đúng với thực tế.
Mình cũng mới test vài cái ngày tháng năm nên chưa chắc nếu code có chạy thực sự theo đúng thực tế hay không. Nếu bạn có thấy thì nhớ báo mình hoặc sữa lại ^^

khi nào hoidap247.com cho gửi những file khác (vd như .txt, .cpp, .py)  :v

image
image
image
image
image

Bạn có biết?

Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!

Nguồn :

Wikipedia - Bách khoa toàn thư

Tâm sự lớp 8

Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!

Nguồn :

sưu tập

Copyright © 2024 Giai BT SGK