#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
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!
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!
Copyright © 2024 Giai BT SGK