Advertisement
huutho_96

code

Oct 6th, 2015
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5.  
  6. void main()
  7. {
  8.     int d, m, y, max;
  9.     int d1, m1, y1, d2, m2, y2;
  10.     //Mặc định năm nhuận là false
  11.     bool nhuan = false;
  12.  
  13.     //Nhập ngày tháng năm
  14.     cout << "Ngay: ";
  15.     cin >> d;
  16.     cout << "Thang: ";
  17.     cin >> m;
  18.     cout << "Nam: ";
  19.     cin >> y;
  20.    
  21.     //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
  22.     if (y % 4 == 0 && y % 100 != 0) nhuan = true;
  23.     if (y % 400 == 0) nhuan == true;
  24.  
  25.     //Lấy số ngày tối đa của tháng đó
  26.     //tháng 2
  27.     if (m == 2)
  28.     {
  29.         if (nhuan)
  30.         {
  31.             max = 29;
  32.         }
  33.         else
  34.             max = 28;
  35.     }
  36.     else
  37.     {
  38.         //tháng 4 6 9 11
  39.         if (m == 4 || m == 6 || m == 9 || m == 11)
  40.             max = 30;
  41.         else
  42.             //còn lại 1 3 5 7 8 10 12
  43.             max = 31;
  44.     }
  45.  
  46.     //kiem tra hop le
  47.     if (d < 0 || m < 0 || y < 0 || d > max || m > 12)
  48.     {
  49.         cout << "Ngay nhap sai\n";
  50.         //Nhập sai thì return tức thoát hàm, và ở đây là thoát chương trình luôn
  51.         return;
  52.     }
  53.     else
  54.         cout << "Ngay hop le\n";
  55.  
  56.     //xuat so ngay trong thang
  57.     cout << "so ngay toi da trong thang " << m << " la: " << max << endl;
  58.  
  59.     //next day lưu trong d1, m1, y1
  60.     //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
  61.     if (d == max)
  62.     {
  63.         d1 = 1;
  64.         m1 = m + 1;
  65.         if (m1 == 13)
  66.         {
  67.             m1 = 1;
  68.             y1 = y + 1;
  69.         }
  70.     }
  71.     else //chỉ cần tăng biến ngày lên 1
  72.     {
  73.         d1 = d + 1;
  74.         m1 = m;
  75.         y1 = y;
  76.     }
  77.     cout << "Ngay tiep theo la: " << d1 << " / " << m1 << " / " << y << endl;
  78.  
  79.  
  80.     //prev day lưu trong d2, m2, y2
  81.     //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
  82.     if (d == 1)
  83.     {
  84.         m2 = m - 1;
  85.         if (m2 == 0)
  86.         {
  87.             m2 = 12;
  88.             y2 = y - 1;
  89.         }
  90.         //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
  91.         if (m2 == 2)
  92.         {
  93.             if (nhuan)
  94.             {
  95.                 d2 = 29;
  96.             }
  97.             else
  98.                 d2 = 28;
  99.         }
  100.         else
  101.         {
  102.             //tháng 4 6 9 11
  103.             if (m2 == 4 || m2 == 6 || m2 == 9 || m2 == 11)
  104.                 d2 = 30;
  105.             else
  106.                 //còn lại 1 3 5 7 8 10 12
  107.                 d2 = 31;
  108.         }
  109.     }
  110.     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
  111.     {
  112.         d2 = d - 1;
  113.         m2 = m;
  114.         y2 = y;
  115.     }
  116.     cout << "Ngay truoc do la: " << d2 << " / " << m2 << " / " << y2 << endl;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement