Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cout << "Введите дату выдачи паспорта" << endl; // уже при вводе данных в саму структуру
- bool check = true;
- int day, month, year;
- while (check) {
- cout << "Введите день выдачи" << endl;
- rewind(stdin);
- cin >> day;
- cout << "Введите месяц выдачи" << endl;
- rewind(stdin);
- cin >> month;
- cout << "Введите год выдачи" << endl;
- rewind(stdin);
- cin >> year;
- check = check_date(day, month, year);
- } // если введенная дата существует и не больше текущей выход из цикла и продолжение ввода остальных данных
- int comparison_with_current_date(int day, int month, int year) {
- int check = 1;
- time_t seconds = time(NULL);
- tm *timeinfo = localtime(&seconds);
- if (year > timeinfo->tm_year + 1900) {
- check = 0;
- }
- if (year == timeinfo->tm_year + 1900 && month > timeinfo->tm_mon + 1) {
- check = 0;
- }
- if (year == timeinfo->tm_year + 1900 && month == timeinfo->tm_mon + 1 && day > timeinfo->tm_mday) {
- check = 0;
- }
- return check;
- }
- int check_date(int day, int month, int year) {
- int check;
- bool isLeap = false;
- bool isValidDate = true;
- check = comparison_with_current_date(day, month, year);
- if (check == 0) {
- cout << "Введенная дата из будущего" << endl;
- cout << "Повторите ввод" << endl;
- return true;
- }
- else {
- if (year % 4 == 0) {
- isLeap = true;
- }
- if (year < 1900 || year > 2019) {
- isValidDate = false;
- }
- if (day < 1 || day > 31) {
- isValidDate = false;
- }
- if (month < 1 || month > 12) {
- isValidDate = false;
- }
- if (month == 2 && day > 29 && isLeap == true) {
- isValidDate = false;
- }
- if (month == 2 && day > 28 && isLeap == false) {
- isValidDate = false;
- }
- if (month == 4 || month == 6 || month == 9 || month == 11) {
- if (day > 30) {
- isValidDate = false;
- }
- }
- if (isValidDate == true) {
- return false;
- }
- else {
- cout << "Неверный формат/такая дата не существует! Введите данные заново!" << endl;
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement