Язык программирования C++. Организовать ввод даты в формате дд.мм.гг с проверкой на правильность и соответствие данному формату.
Ответы на вопрос
Проще всего вводить дату как строку и проверять: длину, точки на нужных местах, цифры, а потом правильность дня и месяца.
Пример программы на C++:
#include <iostream>
#include <string>
using namespace std;
bool isDigit(char c) {
return c >= '0' && c <= '9';
}
bool isLeap(int year) {
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}
int main() {
string s;
cout << "Введите дату в формате дд.мм.гг: ";
cin >> s;
bool ok = true;
if (s.length() != 8) ok = false;
if (ok && (s[2] != '.' || s[5] != '.')) ok = false;
if (ok) {
for (int i = 0; i < 8; i++) {
if (i != 2 && i != 5 && !isDigit(s[i])) ok = false;
}
}
if (ok) {
int day = (s[0] - '0') * 10 + (s[1] - '0');
int month = (s[3] - '0') * 10 + (s[4] - '0');
int year = 2000 + (s[6] - '0') * 10 + (s[7] - '0');
int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month < 1 || month > 12) ok = false;
else {
if (month == 2 && isLeap(year)) daysInMonth[2] = 29;
if (day < 1 || day > daysInMonth[month]) ok = false;
}
}
if (ok) cout << "Дата введена правильно";
else cout << "Ошибка: дата неверная или формат не дд.мм.гг";
return 0;
}
Например, дата 29.02.24 будет правильной, а 31.04.24 — нет, потому что в апреле 30 дней.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

