#include using namespace std; void main() { int d, m, y, max; int d1, m1, y1, d2, m2, y2; //Mặc định năm nhuận là false bool nhuan = false; //Nhập ngày tháng năm cout << "Ngay: "; cin >> d; cout << "Thang: "; cin >> m; cout << "Nam: "; cin >> y; //Kiểm tra năm đó phải năm nhuận không. nếu đúng thì gán lại nhuan. không thì vẫn giá trị mặc định if (y % 4 == 0 && y % 100 != 0) nhuan = true; if (y % 400 == 0) nhuan == true; //Lấy số ngày tối đa của tháng đó //tháng 2 if (m == 2) { if (nhuan) { max = 29; } else max = 28; } else { //tháng 4 6 9 11 if (m == 4 || m == 6 || m == 9 || m == 11) max = 30; else //còn lại 1 3 5 7 8 10 12 max = 31; } //kiem tra hop le if (d < 0 || m < 0 || y < 0 || d > max || m > 12) { cout << "Ngay nhap sai\n"; //Nhập sai thì return tức thoát hàm, và ở đây là thoát chương trình luôn return; } else cout << "Ngay hop le\n"; //xuat so ngay trong thang cout << "so ngay toi da trong thang " << m << " la: " << max << endl; //next day lưu trong d1, m1, y1 //nếu d là ngày cuối cùng của tháng thì d quay lại bằng 1 và tăng tháng lên 1, nếu tháng > 12 thì tháng = 1 và tăng năm lên 1 if (d == max) { d1 = 1; m1 = m + 1; if (m1 == 13) { m1 = 1; y1 = y + 1; } } else //chỉ cần tăng biến ngày lên 1 { d1 = d + 1; m1 = m; y1 = y; } cout << "Ngay tiep theo la: " << d1 << " / " << m1 << " / " << y << endl; //prev day lưu trong d2, m2, y2 //Nếu d là ngày đầu tiên của tháng thì giảm tháng m2 đi 1. trường hợp m2 = 0 thì quay lại m2 = 12 và giảm năm y2 đi 1 if (d == 1) { m2 = m - 1; if (m2 == 0) { m2 = 12; y2 = y - 1; } //d2 sẽ đc cập nhật lại bằng ngày tối đa của tháng trước đo tức tháng m2 sau khi m2 đã giảm 1 if (m2 == 2) { if (nhuan) { d2 = 29; } else d2 = 28; } else { //tháng 4 6 9 11 if (m2 == 4 || m2 == 6 || m2 == 9 || m2 == 11) d2 = 30; else //còn lại 1 3 5 7 8 10 12 d2 = 31; } } else // trường hợp ngày bình thường thì d2 bằng d - 1 tức ngày liền trước trong cùng 1 tháng, thắng năm không đổi { d2 = d - 1; m2 = m; y2 = y; } cout << "Ngay truoc do la: " << d2 << " / " << m2 << " / " << y2 << endl; }