Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. cout << "Введите дату выдачи паспорта" << endl; // уже при вводе данных в саму структуру
  2. bool check = true;
  3. int day, month, year;
  4. while (check) {
  5. cout << "Введите день выдачи" << endl;
  6. rewind(stdin);
  7. cin >> day;
  8. cout << "Введите месяц выдачи" << endl;
  9. rewind(stdin);
  10. cin >> month;
  11. cout << "Введите год выдачи" << endl;
  12. rewind(stdin);
  13. cin >> year;
  14. check = check_date(day, month, year);
  15. } // если введенная дата существует и не больше текущей выход из цикла и продолжение ввода остальных данных
  16.  
  17. int comparison_with_current_date(int day, int month, int year) {
  18. int check = 1;
  19. time_t seconds = time(NULL);
  20. tm *timeinfo = localtime(&seconds);
  21. if (year > timeinfo->tm_year + 1900) {
  22. check = 0;
  23. }
  24. if (year == timeinfo->tm_year + 1900 && month > timeinfo->tm_mon + 1) {
  25. check = 0;
  26. }
  27. if (year == timeinfo->tm_year + 1900 && month == timeinfo->tm_mon + 1 && day > timeinfo->tm_mday) {
  28. check = 0;
  29. }
  30. return check;
  31. }
  32.  
  33. int check_date(int day, int month, int year) {
  34. int check;
  35. bool isLeap = false;
  36. bool isValidDate = true;
  37. check = comparison_with_current_date(day, month, year);
  38. if (check == 0) {
  39. cout << "Введенная дата из будущего" << endl;
  40. cout << "Повторите ввод" << endl;
  41. return true;
  42. }
  43. else {
  44. if (year % 4 == 0) {
  45. isLeap = true;
  46. }
  47. if (year < 1900 || year > 2019) {
  48. isValidDate = false;
  49. }
  50. if (day < 1 || day > 31) {
  51. isValidDate = false;
  52. }
  53. if (month < 1 || month > 12) {
  54. isValidDate = false;
  55. }
  56. if (month == 2 && day > 29 && isLeap == true) {
  57. isValidDate = false;
  58. }
  59. if (month == 2 && day > 28 && isLeap == false) {
  60. isValidDate = false;
  61. }
  62. if (month == 4 || month == 6 || month == 9 || month == 11) {
  63. if (day > 30) {
  64. isValidDate = false;
  65. }
  66. }
  67. if (isValidDate == true) {
  68. return false;
  69. }
  70. else {
  71. cout << "Неверный формат/такая дата не существует! Введите данные заново!" << endl;
  72. return true;
  73. }
  74. }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement