Advertisement
Guest User

Decrement Date

a guest
May 10th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. // ConsoleApplication3.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <stdio.h>
  6. #include <iostream>
  7.  
  8. #define MAX_MONTH 12
  9.  
  10. int monthsMaxDays[] = {
  11.     31, // JAN
  12.     28, // FEB
  13.     31, // ...
  14.     30,
  15.     31,
  16.     30,
  17.     31,
  18.     31,
  19.     30,
  20.     31,
  21.     30,
  22.     31
  23. };
  24.  
  25. void decDate(int &m, int &d);
  26. bool validateInput(const int m, const int d);
  27.  
  28. int main()
  29. {
  30.     int d, m;
  31.     std::cout << "Month: ";
  32.     std::cin >> m;
  33.     std::cout << "Day: ";
  34.     std::cin >> d;
  35.    
  36.     if (!validateInput(m, d)) {
  37.         return -1;
  38.     }
  39.  
  40.     decDate(m, d);
  41.  
  42.     std::cout << "Previous date: Month = " << m << ", Day = " << d;
  43.  
  44.     return 0;
  45. }
  46.  
  47. void decDate(int &m, int &d)
  48. {
  49.     d -= 1;
  50.  
  51.     if (d == 0) {
  52.         d = monthsMaxDays[m - 2];
  53.  
  54.         m -= 1;
  55.  
  56.         if (m == 0) {
  57.             m = MAX_MONTH;
  58.         }
  59.     }
  60. }
  61.  
  62. bool validateInput(const int m, const int d) {
  63.     if (m > MAX_MONTH || m <= 0) {
  64.         std::cerr << "Month must be greater than 0 and lesser than 12";
  65.         return false;
  66.     }
  67.  
  68.     if (d > monthsMaxDays[m - 1] || m <= 0) {
  69.         std::cerr << "Day must be greater than 0 and lesser its max value";
  70.         return false;
  71.     }
  72.  
  73.     return true;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement